一、實現思路:
每次相鄰的兩個元素進行大小比較,大的放在後面
二、優化:
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個中最...