1. 程式人生 > 其它 >Java氣泡排序實現陣列排列

Java氣泡排序實現陣列排列

技術標籤:演算法java演算法排序演算法

原理:比較陣列相鄰的兩個數,較大的交換至右端(或左端)。

例如:將陣列 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+" "); } }