排序方法
平均時間
最好時間
最壞時間
氣泡排序(穩定)
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...