演算法 氣泡排序 Bubblesort

2021-09-26 01:25:12 字數 1079 閱讀 4271

一、實現思路:

每次相鄰的兩個元素進行大小比較,大的放在後面

二、優化:

1.資料為有序陣列:根據   int arr2 = ;可知如果陣列已經排序好了,若繼續執行程遍歷n輪,那就是浪費時間,所以可以利用標記(orderbj )記錄程式是否發生資料交換,如果沒有發生交換,就直接退出。

2.資料部分有序 :根據   int arr = ;可知,如果陣列部分有序,那麼剩下的部分就可以不用交換了,此時利用剛才提到的(orderbj )記錄最大交換位置 那麼代表,這個位置之後的資料已經有序 。

這裡有乙個數量關係,當(i==0)時,也就是說是第一輪,那麼我們可以確定乙個最大值,當(i==1)時,第二輪,我們可以確定次大值;如果陣列有len個元素,那麼,我們需要len-1輪,將len-1個大的數放在後面,這個時候最小的在前面,此時陣列全部處理完畢。此時應該有個概念,(i)代表輪數,第(i)輪時 就會有(i+1)個元素已經在後面排好序;現在討論的情況就是:陣列後面部分是有序的,那麼我們對應這幾輪我們沒有必要再去執行,直接更改(i)的值,跳過這前幾輪的比較就好了,此時發現len-orderbj 對應後面有序元素的個數,也就是(i)需要執行的輪數,所以  i = len - orderbj -1;( -1 是因為最大交換位置表示這個元素是陣列無序部分的最大值,不需要進行下一次的比較所以減下去)

三:適用場景:  小規模資料排序 1k 以內

四:冒泡的時間複雜度:   最好0(n)   最壞0(n^2)   平均0(n^2)   

#include using namespace std;

void bubblesort(int* arr,int len)

}if(orderbj == 0)

break;

i = len - orderbj - 1;

}}int main()

;    int arr1 = ;

int arr2 = ;

bubblesort(arr,sizeof(arr)/sizeof(arr[0]));

for(int i=0;iprintf("%d\n",arr[i]);

return 0;

}

氣泡排序演算法 C 氣泡排序演算法排序詳解

氣泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。c 氣泡排序演算法的例項源 一些排序方法的 集錦,該函式模板使用冒泡法對集合元素進行排序,引數說明 collection 集合物件,集合物件必須提供 操作。element 集合元素,該引數...

氣泡排序 氣泡排序演算法優化

常用的排序演算法主要包括 1 插入排序 直接插入排序 希爾排序 2 交換排序 氣泡排序 快速排序 3 選擇排序 簡單選擇排序 堆排序快速排序 4 歸併排序其中,氣泡排序算是最簡單的一種排序演算法 public class bubble int temp 0 for int i 0 iarr j 1 ...

排序演算法 氣泡排序

一.氣泡排序的過程 公升值排序 1.將第乙個記錄的關鍵字與第二個記錄的關鍵字進行比較,若key 1 key 2 則交換。然後比較第二個與第三個,依此類推,直到第n 1個與第n個比較為止,第一趟排序完後,記錄最大的關鍵字會被排在最後面。2.將記錄的前n 1個關鍵字進行第二趟比較交換,直到前n 1個中最...