深入淺出的排序演算法-氣泡排序

程式設計師哆啦A夢發表於2020-11-09

前言

大家好,今天給大家帶來氣泡排序演算法,希望你們喜歡

氣泡排序

為什麼這個排序要叫冒泡呢?為什麼不叫其他名詞呢?其實這個取名是根據排序演算法的基本思路命名的,見名知意,氣泡排序,就是想泡泡在水裡一樣,在水裡大的泡泡先浮出水面,就是大的先排出來,最小的最慢排出。

氣泡排序,是對排序的各個元素從頭到尾依次進行相鄰的大小比較,比如你是隊長,在你的面前有一排人,你要將其進行排序,依次按照從小到大排序。

怎麼理解最大的值被排除,你是隊長,你對面前的一群人看不慣,進行排序,從左到右開始,第一個和第二個進行比較,大的那個就被挑出來,與第三個進行比較,接下來就是依次按照這個方法比較,就能把那個最大的值,最高的給挑出來不是,這就是第一輪的比較。

接下來,最大的就不用跟他比較了,上面所述,在排序時,你面前的人,是不能亂動的,一旦比較哪個大,兩者就換位,如果第一比第二個小,就是第二個大時,兩者不用換位,第二個就與第三個進行比較。

依照這個方法,兩兩比較,大的都被排到了最後,那麼一旦排完,是不是都依照從小到大,(從低到高)的順序在你面前排好了。

  • 程式碼示例

我們用索引下標來解釋 ``` //第一輪
for(int index=0;index < arr.length-1; index++){
//相鄰兩個比較
if(arr[index] > arr[index+1]){
int temp = arr[index];
arr[index] = arr[index+1];
arr[index+1] = temp;
}
}

print(arr);

for(int index=0;index < arr.length-2;index++){
//這裡arr.length-2,為什麼比上一次多減了1呢?
//因為第一輪,把最大的排出來了,就不用比較了,少了一個人
if(arr[index] > arr[index+1]){
int temp = arr[index];
arr[index] = arr[index+1];
arr[index+1] = temp;
}
}

print(arr);

for(int index=0;index < arr.length-3;index++){
if(arr[index]>arr[index+1]){
int temp = arr[index];
arr[index] = arr[index+1];
arr[index+1] = temp;
}
}

print(arr);
- 優化 for(int num=1;num

for(int index=0;index

if(arr[index]>arr[index+1]){
int temp = arr[index];
arr[index] = arr[index+1];
arr[index+1] = temp;
}
}
}
```

總結

  • 本文講了氣泡排序,如果您還有更好地理解,歡迎溝通

相關文章