初賽 各種排序演算法總結

2022-08-18 03:45:11 字數 1719 閱讀 9168

排序方法

平均時間

最好時間

最壞時間

氣泡排序(穩定)

o(n^2)

o(n)

o(n^2)

選擇排序(不穩定)

o(n^2)

o(n^2)

o(n^2)

插入排序(穩定)

o(n^2)

o(n)

o(n^2)

快速排序(不穩定)

o(nlogn)

o(nlogn)

o(n^2)

歸併排序(穩定)

o(nlogn)

o(nlogn)

o(nlogn)

堆排序(不穩定)

o(nlogn)

o(nlogn)

o(nlogn)

基數排序(穩定)

o(n)

o(n)

o(n)

桶排序(不穩定)

o(n)

o(n)

o(n)

希爾排序(不穩定)

o(nlogn)

o(n^1.2)

o(n^2)

其中,冒泡和插入在資料有序時複雜度為只需要o(n),快速排序在資料有序時退化到o(n^2).

1、氣泡排序

void

bubblesort

(int a,

int n)

}

2、選擇排序
void

selecsort

(int a,

int n)

}

3、插入排序
void

insertsort

(int a,

int n)

a[j+1]

= k;

//出來的時候j多減了1,要加回去

//for(int i = 1; i <= n; i++)cout<}

}

4、快速排序
void

quicksort

(int a,

int n,

int l,

int r)

//將基準數歸位

a[l]

= a[i]

;//相遇的位置

a[i]

= k;

//quicksort

(a,n,l,i-1)

;//遞迴後不用考慮基準數

quicksort

(a,n,i+

1,r)

;}

5、歸併排序
void

mergesort

(int a,

int n,

int l,

int r)

while

(i <= mid)c[k++

]= a[i++];

while

(j <= r)c[k++

]= a[j++];

for(

int i = l; i <= r; i++

) a[i]

= c[i]

;}

6、堆排序

各種排序演算法總結

注 以下所講排序,以公升序排序為例!選擇排序 作者思路 在一組數中,選擇第乙個數標記為最小值,在剩下的數中找比它小的數,若找到則交換兩數,標記新的 最小值 然後繼續往下找,這樣一趟下來就可以找到一組數中第二小的值,第二次以第二個數作為最小值,如此迴圈下去。這是最簡單 最基礎的一種排序演算法。例子 1...

各種排序演算法總結

1 插入排序 void insertsort int a,int n a j 1 key 插入排序是穩定的排序,平均和最壞時間複雜度是o n 2 最好的時間複雜度是o n 對應於全部排好序的情況。2 氣泡排序 void bubblesort int a,intn 氣泡排序是穩定的排序,平均和最壞時間...

各種排序演算法總結

created by vencent on 2008.8.29 1.插入排序 1.1 一般插入排序 insertsort int array,int length 1.2 折半插入排序 bininsertsort int array,int length 1.3 希爾排序 shellsort int...