常用排序演算法總結

2021-10-01 02:51:32 字數 2677 閱讀 1662

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

空間複雜度:o(1)

是否穩定:穩定

public

void

insertsort

(int

array)

array[j]

= tmp;

}}

思路:選取乙個增量序列共k個,進行k趟排序,每次排序根據增量分成子串行,利用插入排序對子序列進行排序,最後乙個增量為1,整個序列進行排序。

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

空間複雜度:o(1)

是否穩定:不穩定

public

void

shellsort

(int

array)

array[j]

= tmp;}}

}

思路:迴圈遍歷,每次迴圈通過兩兩比較確定乙個最大或最小值。

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

空間複雜度:o(1)

是否穩定:穩定

public

void

bubblesort

(int

array)}if

(canbreak)

break;}

return

;}

思路:選取樞紐元,左右同時移動,將小於樞紐元的放在樞紐元前面,大於樞紐元的放在樞紐元後面,進行遞迴直到完全有序。

時間複雜度:o(nlogn)

空間複雜度:o(logn)

是否穩定:不穩定

tips:

public

void

quicksort

(int

array)

public

void

quicksort

(int

array,

int left,

int right)

return;}

public

intpartition

(int

array,

int left,

int right)

array[left]

= pivot;

return left;

}

思路:在未排序序列中查詢出最小(大)元素,放入排序序列起始位置,繼續在剩下未排序序列中重複查詢,直到完全有序。

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

空間複雜度:o(1)

是否穩定:不穩定

public

void

selectionsort

(int

array)}if

(i != min)

}}

思路:根據堆的性質,每次用o(1)時間從堆頂獲取陣列最大值,並將其放在陣列最末尾,並重新下濾形成乙個max堆,直到完全有序。

時間複雜度:o(nlogn)

空間複雜度:o(1)

是否穩定:不穩定

public

void

heapsort

(int

array)

//deletemax

for(

int i = array.length -

1; i >

0; i--)}

public

void

percdown

(int

array,

int i,

int n)

if(array[child]

> tmp)

else

break;}

array[i]

= tmp;

}public

void

swap

(int

array,

int m,

int n)

思路:歸併排序採用分治演算法,每次將序列分對半分,分別對兩個序列進行排序,將兩個有序序列合成乙個完全有序序列。

時間複雜度:o(nlogn);

空間複雜度:o(n);

是否穩定:穩定

public

void

mergesort

(int

array)

public

void

mergesort

(int

array,

int[

] tmp,

int left,

int right)

public

void

merge

(int

array,

int[

] tmp,

int leftpos,

int rightpos,

int rightend)

else

}while

(leftpos <= leftend)

while

(rightpos <= rightend)

for(

int i =

0; i < nums; i++

, rightend--

)}

常用排序演算法總結

總結些常見的排序演算法,方便以後可以重用。資料量不大,為了表達方便就直接使用了陣列。int data null data new int 1.氣泡排序 氣泡排序,從小到大排序 for int i 0 i data.length i 氣泡排序就是說,排序的過程像水裡往上冒的氣泡一樣,每個數字代表乙個氣...

常用排序演算法總結

常用排序演算法總結 選擇排序 對於長度為n的陣列,選擇排序需要大約n2 2詞比較和n次交換。插入排序 對於隨機排列的長度為n且主鍵不重複的陣列 1 平均情況下,需要 n2 4次比較以及 n2 4次交換。2 最壞情況下,需要 n2 2次比較以及 n2 2次交換 3 最好情況下,需要n 1次比較以及0次...

常用排序演算法總結

注 所有排序都是寫的由小到大排序的情況 1.插入排序 1 直接插入排序 穩定 arr sortedindex 1 key 注意這裡的下標 sortedindex 1 2 希爾排序 不穩定 希爾排序好的增量序列的共同特徵 希爾排序演算法 fromid 1801475 type syn 最後乙個增量必須...