演算法筆記學習之三種基本排序

2021-09-28 10:32:07 字數 1022 閱讀 4298

基本排序:氣泡排序,選擇排序,插入排序。

高等排序:快速排序,歸併排序,希爾排序,堆排序。

這是我個人的理解,後三種排序是基於前三種排序的基礎上進行完全完善的。

時間複雜度:o(n^2) 空間複雜度: o(1)

舉例:3 4 1 5 2 按照要求把它們從小到大的順序排列。

第一趟:3 4 1 5 2 (a[0]與a[1]比較)  ===> 3 1 4 5 2 (a[1]與a[2]比較)===> 3 1 4 5 2 (a[2]與a[3]比較)  ===>  3 1 4 2 5 (a[3]與a[4]比較).

第二趟:1 3 4 2 5 (a[0]與a[1]比較)  ===>1 3 4 2 5 (a[1]與a[2]比較)===>1 3 2 4 5 (a[2]與a[3]比較).

第三趟:1 3 2 4 5 (a[0]與a[1]比較)  ===>1 2 3 4 5 (a[1]與a[2]比較).

第四趟:1 2 3 4 5 (a[0]與a[1]比較) .

所以說氣泡排序整個過程執行n-1趟,每一趟從左到右依次比較相鄰的兩個數,如果大的數在左邊,交換這兩個數當該趟結束時,該趟最大數被移動到當前剩餘數的最右邊。

#include#includeusing namespace std;

int main()

; for(int i=1;i<=4;i++)//進行的躺數

}} for(int i=0;i<5;i++)

selectsort(a,n);

for(int i=1;i<=n;i++)

insertsort(a,n);

for(int i=1;i<=n;i++)

{ cout三種排序插入排序和氣泡排序均是穩定的排序,選擇排序是不穩定的排序。三種排序都有自己的應用場景,主要需要理解背後的原理和本質。

三種基本排序演算法

示例陣列 以公升序為例 for int i 0 i arr.length i 輪數 第一次 j下標從0開始,第0位與第1位相比較,當第0位大於第1位時 3 1 進行交換。交換完陣列為 第二次j為1,第1位與第2位比較,3 5,不交換。第三次j為2,第2位與第3位比較,5 2,交換。陣列為 第四次j為...

三種基本排序

由於排序不僅是針對主關鍵字,那麼對於次關鍵字,因為待排序的記錄序列中可能存在兩個或者兩個以上的關鍵字相等的記錄,排序結果可能會存在不唯一的情況,所以我們給出了穩定與不穩定排序的定義。假設ki kj 1 i n,1 j n,i j 且在排序前的序列中 ri 領先於 rj 即i j 如果在排序後仍然領先...

三種排序演算法

1.氣泡排序法 2.選擇排序法 3.插入排序法 由小到大的順序 備註 網上筆試題,是參考網上別人的,具體出處找不到了,請諒解。摘抄記錄下來方便日後學習。如果有問題盡請批評指正,希望可以和大神一起交流。氣泡排序的最好的時間複雜度為o n 最壞的時間為 o n 2 演算法的平均時間複雜度為o n 2 選...