Java氣泡排序實現陣列排列
阿新 • • 發佈:2021-01-13
原理:比較陣列相鄰的兩個數,較大的交換至右端(或左端)。
例如:將陣列 int[ ] arr = {5,3,8,7,2} 從小到大排序。
思路:依次比較陣列中相鄰的兩個數,小數放在前面,大數放在右面,即第一次遍歷:將第1個數和第2個數比較,大數放在後面,小數放在前面。然後第2個數和第3個數比較,大數放後面,小數放在前面,依次進行下去直至排列完成。一次遍歷會將陣列內最大數排列至最後,第二次遍歷排列除最後一項即可,即進行arr.length-1次遍歷即可完成排序。
第一次遍歷:
5和3比較:5>3,交換位置。int[ ] arr = {3,5,8,7,2}. 5和8比較:5<3,不交換位置。int[ ] arr = {3,5,8,7,2}. 8和7比較:8>7,交換位置。int[ ] arr = {3,5,7,8,2}. 8和2比較:8>2,交換位置。int[ ] arr = {3,5,7,2,8}.
第二次遍歷:
3和5比較:3<5,不交換位置。int[ ] arr = {3,5,7,2,8}.
5和7比較:5<7,不交換位置。int[ ] arr = {3,5,7,2,8}.
7和2比較:7>2,交換位置。int[ ] arr = {3,5,2,7,8}.
第三次遍歷:
3和5比較:3<5,不交換位置。int[ ] arr = {3,5,2,7,8}.
5和2比較:5>2,交換位置。int[ ] arr = {3,2,5,7,8}.
第四次遍歷:
3和2比較:3>2,交換位置。int[ ] arr = {2,3,5,7,8}.
Java程式碼實現如下:
public static void main(String[] args) {
int[ ] arr = {5,3,8,7,2};
int temp=0;//用於存放比較數第一個數的值
for(int i=0;i<arr.length-1;i++) {//外迴圈次數:總共遍歷多少次
for(int j=0;j<arr.length-1-i;j++) {//內迴圈次數:比較多少次
if(arr[j]>arr[j+1]) {
temp=arr[j];
arr[j]=arr[j+1];
arr[j+ 1]=temp;
}
}
}
for(int num:arr) {
System.out.print(num+" ");
}
}