簡單排序 氣泡排序 簡單選擇排序 插入排序)

2021-07-10 20:45:40 字數 2863 閱讀 5093

氣泡排序

/**

* 氣泡排序,掃瞄len次,每次用下標0掃瞄到len-1-i,比較相鄰的兩個元素並交換

* @param num

* @param len

*/void bubblesort(int num,int len)

cout<<"b"《簡單選擇排序

/*** 簡單選擇排序

* 掃瞄len次,每次從下標i掃瞄到len-1,每次掃瞄找到乙個極值放到位置i的值交換

* @param num

* @param len

*/void ******selectsort(int num,int len)

}num[minindex] = num[i];

num[i]=min;

}}

直接插入排序

/*** 簡單插入排序

* 從第二個位置開始掃瞄len-1次,每次與前面的乙個乙個比較,小於則交換。大於等於繼續向後掃瞄

* @param num

* @param len

*/void ******insertsort(int num,int len)

{ for(int i=1;i

分類時間複雜度

空間複雜度

穩定性演算法描述

直接插入排序

最好o(n) 

最壞o(n^2) 

平均o(n^2)

o(1)

需要乙個監視哨

穩定直接插入排序所產生的有序區不一定是全域性有序的

每一趟不一定將乙個元素放在最終位置上

插入排序效率與待排序資料的順序有關,當正序時效率最高,反序時效率最低

折半插入排序

平均o(n^2)

o(1)

穩定折半插入排序,在直接插入排序的基礎上,減少了尋找有序區合適位置的比較次數,而元素的移動次數不變

希爾排序

又稱縮小增量排序

平均o(n^1.3)

o(1)

不穩定希爾排序每一趟並不產生有序區

每一趟不一定將乙個元素放在最終位置上

希爾排序的效率與待排序資料的順序有關,當正序時效率最高,反序時效率最低

插入排序:每趟將乙個待排元素插入有序區的合適位置

分類時間複雜度

空間複雜度

穩定性演算法描述

直接插入排序

最好o(n) 

最壞o(n^2) 

平均o(n^2)

o(1)

需要乙個監視哨

穩定直接插入排序所產生的有序區不一定是全域性有序的

每一趟不一定將乙個元素放在最終位置上

插入排序效率與待排序資料的順序有關,當正序時效率最高,反序時效率最低

折半插入排序

平均o(n^2)

o(1)

穩定折半插入排序,在直接插入排序的基礎上,減少了尋找有序區合適位置的比較次數,而元素的移動次數不變

希爾排序

又稱縮小增量排序

平均o(n^1.3)

o(1)

不穩定希爾排序每一趟並不產生有序區

每一趟不一定將乙個元素放在最終位置上

希爾排序的效率與待排序資料的順序有關,當正序時效率最高,反序時效率最低

插入排序:每趟將乙個待排元素插入有序區的合適位置

分類時間複雜度

空間複雜度

穩定性演算法描述

直接插入排序

最好o(n) 

最壞o(n^2) 

平均o(n^2)

o(1)

需要乙個監視哨

穩定直接插入排序所產生的有序區不一定是全域性有序的

每一趟不一定將乙個元素放在最終位置上

插入排序效率與待排序資料的順序有關,當正序時效率最高,反序時效率最低

折半插入排序

平均o(n^2)

o(1)

穩定折半插入排序,在直接插入排序的基礎上,減少了尋找有序區合適位置的比較次數,而元素的移動次數不變

希爾排序

又稱縮小增量排序

平均o(n^1.3)

o(1)

不穩定希爾排序每一趟並不產生有序區

每一趟不一定將乙個元素放在最終位置上

希爾排序的效率與待排序資料的順序有關,當正序時效率最高,反序時效率最低

交換排序:兩兩比較待排元素,逆序則交換 分類

時間複雜度

空間複雜度

穩定性演算法描述

氣泡排序

最壞o(n^2)

平均o(n^2)

o(1)

穩定起泡排序中所產生的有序區一定是全域性有序的

每一趟排序都將乙個元素放到最終位置上

正序效率最高,逆序效率最低

快速排序

平均o(nlog2n)

遞迴棧中佔空間

至少o(log2n)

最多o(n)

不穩定快速排序不產生有序區

但每一趟都歸位乙個元素

與待排資料順序有關,正序和逆序時效率都低,只有當資料隨機分布時,每劃分的子區間長度大致相等時,效率最高

選擇排序:在無序區中選擇最值放在有序區的最後,形成新的有序區和無序區 分類

時間複雜度

空間複雜度

穩定性演算法描述

簡單選擇排序

o(n^2)

o(1)

不穩定有序區全域性有序

每趟都歸位乙個元素

時間複雜度與待排序元素順序無關

堆排序o(nlog2n)

o(1)

不穩定有序區一定全域性有序,有序區全部大於或小於無序區中的關鍵字

每趟歸位乙個元素

時間複雜度與待排序元素無關

此外還有基於分治思想的歸併排序和適用於多關鍵字排序的基數排序(又稱桶排序)

簡單排序之簡單選擇排序

通過n i次關鍵字間的比較,從n i 1個記錄中選出關鍵字最小的記錄,並和第i 1 i n 個記錄交換之。在排序過程中 相同元素的前後順序並沒有改變,則可認為此排序為穩定排序,反之為不穩定排序。package sorts public class choosesort if min i public...

氣泡排序and簡單選擇排序

在第一趟排序中,從第乙個元素開始,掃瞄整個待排序元素序列,若相鄰的兩個元素逆序,則交換位置。直到最後乙個元素,此時,最後乙個元素必為最大的元素。第二趟排序,依然從第乙個元素開始掃瞄直到倒數第二個元素。第三趟排序,從第乙個掃瞄到倒數第三個。直到只剩乙個元素需要掃瞄。程式如下 includeint ma...

簡單排序 氣泡排序 簡單選擇排序 直接插入排序演算法

一.氣泡排序 基本思想 兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。1.正宗的冒泡演算法 function bubblesort arr return arr 2.改進的冒泡演算法 function bubblesort arr return arr 3.複雜度分析 時間複雜度...