氣泡排序及其優化

2021-09-25 15:27:40 字數 815 閱讀 8792

氣泡排序:把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,是不必再去交換的;如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以氣泡排序是一種穩定排序演算法。

//氣泡排序在平均和最壞情況下的時間複雜度都是o(n^2),最好情況下是o(n);

void bubblesort(int arr, int len)

} }}氣泡排序優化:針對的是序列本身有序或者序列元素都相等的情況,比如1 2 3 4 5或者 1 1 1 1 1這樣形式的資料;另一種是像3 2 1 4 5 6這樣的資料,其特點是後半部分資料已經有序。優化的方法都是減少不必要的比較次數。

void bubblesort1(int arr, int len)

swaptimes++;

} i = len - 1 - lastsawpindex; //優化方案二:計算"實際"有序區間的大小,減少不必要的比較

if (!flag) //優化方案一:記錄第一趟交換次數,交換的次數為0,說明有序,不需要再排序,跳出迴圈

}printf("%d\n", swaptimes);

}//優化方案三:雙向排序

void cocktail_sort(int arr,int len)

}right--;

for (int j = right; j > left; j--)//找到當前排序元素裡最小的那個,放在左側

left++;

}} }

氣泡排序及其優化

然則 2015年12月30日發布 氣泡排序是比較簡單的,其排序步驟就是比較相鄰元素並將較大的往後移。每掃瞄一輪,將確定乙個元素的位置。實現如下 void sort int a 對氣泡排序的優化主要是減少交換次數。如果一次掃瞄中元素沒有發生交換,那麼排序就可以結束了。為此可設定一標誌量flag,預設為...

氣泡排序及其優化

課程名稱 資料結構 實驗專案名稱 排序演算法的實現與比較 實驗目的 1 掌握優化氣泡排序的演算法 實驗要求 1 對於輸入的任意乙個整型資料序列,將其進行氣泡排序,要求該氣泡排序的演算法為優化之後的演算法,即 a.設定flag變數,當一趟排序結束後flag的值未更新,剛說明序列已經有序,停止排序 b....

氣泡排序及其優化

bubble sort比較簡單,本文首先列出了基礎版本bubble sort的偽 之後做兩點小的優化。1.基礎版本bubblesort 原始版的bubblesort 時間複雜度為o n 2 function bubblesort array x,int length for int i 0 i le...