1.冒泡排序
基本思想:兩數比較大小,較大數后移,較小數前移
平均時間復雜度:O(n2)
代碼實作:
void BubbleSort(int arr[],int len) {
int temp, i, j;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
針對問題:順序排好后,冒泡排序可能會繼續下一輪回圈,直到滿足退出條件
優化方案:若本輪沒有發生兩數交換,則退出回圈
void BubbleSort(int arr[],int len) {
int temp, i, j,flag;
for (i = 0; i < len - 1; i++) {
flag = 0
for (j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
flag = 1;/*發生兩數交換,flag 置為 1*/
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
if (flag == 0) {
break;
}
}
}
2.選擇排序
基本思想:第 i 次遍歷陣列,找出最小的數值與第 i 個元素交換
平均時間復雜度:O(n2)
代碼實作:
void sort(int a[],int n){
int i,j,min,t;
for(i=0;i<n-1;i++){
min=i;
for(j=i+1;j<n;j++){
if(a[j]<a[min]){
min=j;
}
}
if(min!=i){
t=a[i];
a[i]=a[min];
a[min]=t;
}
}
}
參考資料:排序演算法總結
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/47172.html
標籤:C
上一篇:C語言qsort()函式的使用
下一篇:goweb-部署與維護
