氣泡排序通過兩兩比較的思想如果發現逆序則交換,依次將較大的元素逐漸從前面移到後面
原始陣列:2,7,-1,10,19
第一趟排序:
(1) 2,7,-1,10,19 2與7比較,2比7小,無需交換
(2) 2,-1,7,10,19 7與-1比較,-1比7小,發生了一次交換
(3) 2,-1,7,10,19 7與10比較,7比10小,無需交換
(4) 2,-1,7,10,19 10與19比較,10比19小,無需交換
第一趟結束19是最大的數排到了最右面
第二趟排序
(1) -1,2,7,10,19 2與-1比較,-1比2小,發生了一次交換
(2) -1,2,7,10,19 2與7比較,2比7小,無需交換
(3) -1,2,7,10 ,19 7與10比較,7比10小,無需交換
第二趟結束10是第二大的數排到了倒數第二位
第三趟排序
(1) -1,2,7,10 ,19 -1與2比較,-1比2小,無需交換
(2) -1,2,7 ,10 ,19 2與7比較,2比7小,無需交換
第三趟結束7是第三大的數排到了倒數第三位
第四趟排序
(1) -1,2,7 ,10 ,19 2與7比較,2比7小,無需交換
第四趟結束2是第四大的數排到了倒數第四位
最後乙個元素無需比較
先定義乙個陣列與臨時變數
int
arr =
;int temp;
1.第一趟排序
for
(int j =
0; j < arr.length -
1; j++
)}
2.第二趟排序
for
(int j =
0; j < arr.length -
2; j++
)}
3.第三趟排序
for
(int j =
0; j < arr.length -
3; j++
)}
4.第四趟排序
for
(int j =
0; j < arr.length -
4; j++
)}
發現有除了乙個值從1到4變化,其它都不變,這個值的最大值剛好就是arr長度-1
int
arr =
;int temp;
for(
int i=
1;isystem.out.
println
("第"
+i+"趟排序後:"
+ arrays.
tostring
(arr));
}
輸出
在上面的實現思路中,第一趟,第二趟排序過後發現已經是有序的了,我們可以在發現在一趟比較中沒有發現交換的情況就認為已排好序不再進行排序。
int
arr =
;int temp;
for(
int i =
1; i < arr.length; i++)}
system.out.
println
("第"
+ i +
"趟排序後:"
+ arrays.
tostring
(arr));
if(flag)
}
輸出截圖 資料結構與演算法 排序 氣泡排序
兩兩相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。氣泡排序基本概念是 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此...
資料結構與演算法 排序 氣泡排序
今天來學一下十大排序 首先,我們先了解下各個排序的時間複雜度 冒泡 選擇 插入 歸併 快速 希爾 堆排序屬於比較排序 在這裡,我們預設排序是從小到大排序。乙個動態演示各種排序演算法的動畫 visualgo 如果相等的兩個元素,在排序前後的相對位置保持不變,那麼這個演算法是穩定的排序演算法。比如 5 ...
資料結構與演算法 氣泡排序演算法
氣泡排序的基本思想是 從前往後依次比較相鄰的兩個元素,如是從小到大排序 發現數值小的在後面則想換位置,發現數值大的在後面則不變。然後繼續向後比較兩個相鄰的元素,直到比較到最後乙個元素,這一小輪的比較就算完成了,那麼最大的元素肯定可以確定,且排在了最後的位置,然後在開始新的一輪比較,以此類推。例 原始...