排序演算法的總結

2021-06-21 07:51:55 字數 1104 閱讀 4391

#include using namespace std;

/*直接插入排序,主要是找到需要插入位置,while迴圈就是為了找到插入位置。

陣列存放從1開始。

演算法是穩定的。

效能分析:最佳情況為輸入陣列已經排好序 o(n),最差為逆序o(n^2);

*/void insert_sort(int *array,int len)

array[i+1]=key; }}

void swap(int &a,int &b)

/*直接選擇排序實現,找到最小的放在1位置,以此類推操作後面知道倒數第二個數,此時陣列排序完成。

從1開始存

演算法穩定性:不穩定。如下例

排序前:

2,4,4*,3

排序後:

2,3,4*,4

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

*/void select_sort(int *array,int len)

else

}while(i<=len1)

while (j<=len2) }

/*歸併排序:遞迴到單個元素,然後合併

穩定排序。

複雜度當規模足夠大時為o(lgn),最壞情況下要比插入排序(o(n^2))好。

*/void merge_sort(int *array,int start,int end)

array[low]=array[high];

while (low>len;

int *a=new int[len+1];

int i;

for (i=1;i<=len;i++)

//陣列元素都是從1開始存

insert_sort(a,len);

select_sort(a,len);

merge_sort(a,1,len);

bubble_sort(a,len);

quick_sort(a,1,len);

printarray(a,len);

return 0;

}

選擇排序、快速排序、希爾排序、堆排序不是穩定的排序演算法,而氣泡排序、插入排序、歸併排序和基數排序是穩定的排序演算法。

排序演算法的總結

學習了選擇排序演算法 插入排序演算法 氣泡排序演算法等。主要思想是 每次迴圈是第i個與後面的元素逐個比較,一次迴圈後得出了最大值,放在了第i個位置上 1.從第i個元素開始,逐個比較i 1到0個元素,誰大誰小。在每次比較的過程中是交換比較的元素 由於每次比較採用的是交換每個元素,交換存在時間的消耗。2...

排序演算法 經典的排序演算法總結

一 氣泡排序 1.氣泡排序的思想 對於乙個長度為n的陣列,從小到大進行排序。0 n 1範圍內,兩兩進行比較與交換,結果是最大的元素放在陣列的最後面 即n 1位上 0 n 2範圍內,兩兩進行比較與交換,結果是第二大元素放在最後面 即n 2位上 重複上述過程,直到範圍縮小到只有0位的乙個元素為止。2.例...

排序演算法總結

1 直接插入排序 1 穩定性 穩定 2 適用情況 待排記錄規模較小,或者記錄已經基本有序 2 希爾排序 1 穩定性 不穩定 2 特點 希爾排序的執行時間依賴於增量序列,它的效率比直接插入排序有較大的改進。3 氣泡排序 1 穩定性 穩定 2 特點 當待排記錄基本有序是,氣泡排序是不錯的選擇 但由於氣泡...