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