//時間複雜度 最好的: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...