C語言經典排序

2021-06-28 18:27:51 字數 979 閱讀 8040

在氣泡排序、選擇排序編寫**之後,樓主漸漸找到了coding的信心,熟能生巧,就像寫詞唱曲之前,都得先背誦大量的詩詞,熟悉各路歌曲,才能走出自己的路線,有自己的傑作。好吧,來讓樓主繼續進行"社會主義初級階段"的任務,這次是插入排序。

插入排序:

插入即表示將乙個新的資料插入到乙個有序陣列中,並繼續保持有序。例如有乙個長度為n的無序陣列,進行n-1次的插入即能完成排序;第一次,陣列第1個數認為是有序的陣列,將陣列第二個元素插入僅有1個有序的陣列中;第二次,陣列前兩個元素組成有序的陣列,將陣列第三個元素插入由兩個元素構成的有序陣列中......第n-1次,陣列前n-1個元素組成有序的陣列,將陣列的第n個元素插入由n-1個元素構成的有序陣列中,則完成了整個插入排序。

以下面5個無序的資料為例:

65 27 59 64 58 (文中僅細化了第四次插入過程)

第1次插入: 27 65 59 64 58

第2次插入: 27 59 65 64 58

第3次插入: 27 59 64 65 58

第4次插入: 27 58 59 64 65

平均時間複雜度:o(n2)

空間複雜度:o(1)  (用於記錄需要插入的資料)

穩定性:穩定

從前向後查詢的插入排序:

void insertion_sort(int data, int n)

}

}

}

基本思想:每一趟(第i趟, i  = 0, 1, 2, ......n-1)在後面n-i個待排序記錄中選出關鍵字最小的記錄,作為有序記錄序列的第i個記錄。直到第n-2趟完,待排記錄只剩下乙個,不完再選了!

#include void select_sort(int data, int num)

}if(k != i)}}

C語言冒泡法排序 經典

c語言冒泡法排序 經典 冒泡法排序的演算法思想是 通過無序區中相鄰記錄關鍵字間的比較和位置交換,使關鍵字的記錄如氣泡一般逐漸往上 漂浮 至 水面 整個演算法是從最下面的記錄開始,對每兩個相鄰的關鍵字進行比較,且使關鍵字較小的記錄換至關鍵字較大的記錄之上,使得經過一趟氣泡排序後,關鍵字最小的記錄到達最...

經典排序演算法總結(C語言)

十種常見排序演算法一般分為以下幾種 1 非線性時間比較類排序 交換類排序 快速排序和氣泡排序 插入類排序 簡單插入排序和希爾排序 選擇類排序 簡單選擇排序和堆排序 歸併排序 二路歸併排序和多路歸併排序 2 線性時間非比較類排序 計數排序 基數排序和桶排序。總結 1 在比較類排序中,歸併排序號稱最快,...

經典排序 氣泡排序 C語言版

本人小白一枚,為了能夠更好的學習和記錄,故用這個部落格記錄學習過程,也希望得到各位高人的指點。現在就從最基礎的經典演算法開始!如有不對,希望得到指正,這樣才能更好的進步 氣泡排序 從前面開始,前後數字比較,將大的交換到後面,則迴圈一輪下來最大的數字到了最後,以此類推每次迴圈都將最大的放在最後 如果第...