十大排序演算法 C 版

2021-09-24 23:17:13 字數 1512 閱讀 9560

//時間複雜度 最好的:o(n^2), 最壞:o(n^2),平均:o(n^2),空間複雜度:o(1),穩定

//改善的氣泡排序 最好:o(n) 最好 o(n^2) 平均 o(n^2)

void bubble(int a,int length)

}if(flag==false) break;}}

//快速排序:最好時間複雜度:o(nlogn),最差時間複雜度:o(nlogn),平均時間複雜度:o(nlogn),空間複雜度:o(logn),不穩定

int par(int a,int length,int i,int j)

if(index=0 && a[j]>a[j+1]; j--)

swap(a[j],a[j+1]);

}

//希爾排序,最壞時間複雜度:o(n^2),最好的時間複雜度:o(n),平均時間複雜度:o(n^1.3);空間複雜度:o(1),不穩定

void shellsort(int a,int length)

a[preindex+gap]=cur;

}gap=gap/2;

}}void shellsort2(int a, int length)

a[preindex+gap]=cur;

}gap=gap/2;}}

//選擇排序:最好的時間複雜度:o(n^2),最差的時間複雜度:o(n^2),平均時間複雜度:o(n^2),空間複雜度:o(1),不穩定

void selectsort(int a,int length) else break;

}a[index]=temp;

}void heapsort(int a,int len)

}

//歸併排序,最好的時間複雜度:o(nlogn),最好的時間複雜度:o(nlogn),平均時間複雜度:o(nlogn),空間複雜度:o(n),穩定

void merge(int a,int l,int m,int r)

void bucketsort(int a,int length)}}

//基數排序:最壞時間複雜度:o(n*k),最好時間複雜度:o(n*k),平均時間複雜度:o(n*k),空間複雜度:o(n+k),穩定

int findkth(int num,int n)

int k=0;

//cout<0)

//cout<

for(int j=0;jusing namespace std;

int findmax(int *a,int size)

return b;

delete c;

}

十大排序演算法(c )

1.氣泡排序 每一輪都從頭開始比較,比較當前數與後一位數,若當前數大於後一位數則進行交換,每一輪都會在末尾得到一位排序正確的數,因此每一輪比較結束,下一輪的比較範圍將縮小 ja j 1 if ischange break 2.插入排序 每一輪將當前數 a i 插入到前面已經排序好的合適位置,因此關鍵...

十大排序演算法(C )

原理 比較相鄰兩個元素,如果前乙個比後乙個大則交換二者位置 以公升序為例 每進行一輪比較則可以把最大的元素放到相對最後的位置。每進行一輪比較就會有乙個元素變為有序。迴圈對每輪越來越少的元素進行比較則最終變為有序序列。如果序列元素初始時為有序,則一輪則可進行排序完畢,最好時間複雜度為o n 如果序列元...

十大排序演算法

1.非線性時間類排序 時間複雜度未突破 0 nlog 2n 不穩定的四個排序演算法 選擇排序 0 n2 希爾排序 0 n1.3 希爾排序實現python 快速排序 0 n log2 n 0 nlog 2n 0 nlog 2 n 快速排序實現c python 堆排序 0 n log2 n 0 nlog...