簡單排序:氣泡排序
阿新 • • 發佈:2019-01-06
溫故而知新,可以為師矣。
今天寫一篇關於排序演算法的部落格,理一理學習的思路。
首先 一想到排序演算法最簡單易懂的當然是氣泡排序了,現在給大家理一理氣泡排序的思路,氣泡排序的的基本思路是在相鄰的兩個數字之間比較,然後將比較小的放在前面,然後依次比較。
舉個例子來說首先我們自定義一個數組:{5,4,3,2,1}; 要求將該陣列從小到大排列
我們首先從後往前開始比較:將較小的的換到前面去
第一輪:
5,4,3,2,1
第一次比較: 1和2交換位置
5,4,3,1,2,
第二次比較: 1和3交換位置
5,4,1,3,2,
第三次比較: 1和4交換位置
5,1
第四次比較 :1和5交換位置
1,5, 4, 3,2,
第一輪比較就完成了,實現了第一位最小的數字的確定然後進行第二輪的比較
第二輪
1, 5, 4, 3 ,2
第一次比較:2和3 交換位置
1, 5, 4, 2, 3
第二次比較:2和4 交換位置
1, 5, 2, 4, 3
第三次比較:2和5 交換位置
1, 2, 5,4, 3
注意由於第一輪確定了最小的數字,則2和1不需要比較,第二輪又確定了第二個位置的數字
第三輪:
1 ,2, 5, 4, 3
第一次比較:3和4 交換位置
1 ,2, 5, 3, 4
第二次比較:3和5 交換位置
1 ,2, 3
由於前面兩個數字都確定了所以不需要比較了第三個數字也就確定了
第四輪:
1,2,3,5,4
第一次比較:4和5 交換位置
1,2,3,4,5
由於前面三個數字確定了下來,第四輪就需要比較一次就能確定。至此,氣泡排序就完成了!
氣泡排序的過程大家應該瞭解了怎麼用程式碼來表示出來呢?
程式碼如下:
public class BubbleSort{
public static void main(String[] args) {
// 定義一個數組
int[] array = { 5, 4, 3, 2, 1 };
// 外層迴圈控制輪數 在這裡是4輪
for (int i = 0; i < array.length - 1; i++) {
// 內層迴圈控制比較次數 其中j>i 的原因是前面每一輪都能確定一個數字的位置所以前面的位數不需要比較
for (int j = array.length - 1; j > i; j--) {
if (array[j] < array[j - 1]) {
// 如果後面的比前一位小則交換位置
int temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
}
}
}
//迴圈遍歷出來
for (int i : array) {
System.out.print(i+" ");
}
}
}
最後遍歷的結果是: 1 2 3 4 5