這里寫目錄標題
- 選擇排序
- 冒泡排序
- 插入排序
- 希爾排序
- 歸并排序
- 快速排序
選擇排序

常規思維:
第一步 先找出最大數,與最后一個數交換,

第二步 再找出除最后一個最大數,與倒數第二個交換位置,

,,, ,,,重復以上步驟

冒泡排序

以上程序就是冒泡排序:
- 通過重復地遍歷未排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來,
- 走訪數列的作業是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成,
- 這個演算法的名字由來是因為越小的元素會經由交換慢慢得像泡泡一樣“浮”到數列的頂端,故而得名!
插入排序
插入排序:
- 它的作業原理是通過構建有序序列,對于未排序資料,在已排序序列中從后向前掃描, 找到相應位置并插入,
- 插入排序在實作上,通常采用 in-place 排序(即只需用到 O(1)的額外空間的排序),因而在從后向前掃描程序中,需要反復把已排序元素逐步向后挪位,為最新元素提供 插入空間,
具體演算法描述如下:
- 從第一個元素開始,該元素可以認為已經被排序;
- 取出下一個元素,在已經排序的元素序列中從后向前掃描;
- 如果該元素(已排序)大于新元素,將該元素移到下一位置; 重復步驟 3,直到找到已排序的元素小于或者等于新元素的位置;
- 將新元素插入到該位置; 重復步驟 2~5,
希爾排序
- 希爾排序是希爾(Donald Shell)于 1959 年提出的一種排序演算法,希爾排序也是一種插入排 序,它是簡單插入排序經過改進之后的一個更高效的版本,也稱為縮小增量排序,它與插入排序 的不同之處在于,它會優先比較距離較遠的元素,
- 希爾排序是把記錄按下表的一定增量分組,對每組使用直接插入排序演算法排序;隨著增量逐 漸減少,每組包含的元素越來越多,當增量減至 1 時,所有元素被分成一組,實際上等同于執行一 次上面講過的插入排序,演算法便終止,

歸并排序
- 當兩個組資料已經有序,我們可以通過如下方式(以下簡稱歸并大法)讓兩組資料快速有序,
- 我們可以依次從兩組中取最前面的那個最小元素依次有序放到新的陣列中,然后再把新陣列 中有序的資料拷貝到原陣列中,快速完成排序.
快速排序
- . 每次選取第一個數為基準數;
- 然后使用“乾坤挪移大法”將大于和小于基準的元素分別放置于基準數兩邊;
- 繼續分別對基準數兩側未排序的資料使用分治法進行細分處理,直至整個序列有序,
對于下面待排序的陣列:

第一步:先選擇第一個數 163 為基準數,以 163 為基準將小于它的數排在它前面,大于等于它 的數排在其后,結果如下:


第二步:采用分治法分別對基數左邊和右邊的部分運用第一步中的方法進行遞回操作,直到整個 陣列變得有序,以左邊的陣列為例:

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/280947.html
標籤:其他
