用 Java 實現一個冒泡排序算法


        冒泡排序(BubbleSort)的基本概念是:依次比較相鄰的兩個數,將小數放在前面,大數放在后面。即首先比較第1個和第2個數,將小數放前,大數放后。然后比較第2個數和第3個數,將小數放前,大數放后,如此繼續,直至比較最后兩個數,將小數放前,大數放后。重復以上過程,仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再大於第2個數),將小數放前,大數放后,一直比較到最小數前的一對相鄰數,將小數放前,大數放后,第二趟結束,在倒數第二個數中得到一個新的最小數。如此下去,直至最終完成排序。

       由於在排序過程中總是小數往前放,大數往后放,相當於氣泡往上升,所以稱作冒泡排序。 冒泡排序最好的時間復雜度為 O(n),總的平均時間復雜度為 O(n^2),是一種穩定排序算法。

       在編程實現中,一般用二重循環實現,外循環變量設為 i,內循環變量設為 j。外循環重復 n 次,內循環依次重復 n-1, n-2, ……, 1 次。每次進行比較的兩個元素都是與內循環 j 有關的,它們可以分別用 a[j] 和 a [j+1] 標識,i 的值依次為 1, 2, ……, n,對於每一個 i,j 的值依次為 1, 2, ……, n-i,例如下面的代碼:

  1 for (int i = 0; i < arrys.length; i++) {
  2     for(int j = 0;j < arrys.length-i-1; j++){
  3          if(arrys[j] > arrys[j+1]){ //判斷當前數字與后面數字的大小
  4             //把大數放后邊
  5          }
  6      }
  7 }

 

以下是該題目的代碼實現:

  1 package com.fhcq.bubblesort;
  2 
  3 public class BubbleSort {
  4 
  5   //主方法
  6   public static void main(String[] args) {
  7     int[] arr = { 3, 5, 7, 1, 8, 11, 9}; //定義數組 
  8     bubbleSort (arr); //開始排序
  9   }
 10 
 11   //排序方法
 12   public static void bubbleSort(int[] arrys) {
 13     //定義臨時變量 temp
 14     int temp = 0;
 15     //用j為下標,遍歷數組
 16     for (int j = 0; j < arrys.length; j++) {
 17       //對於每一個數組元素,從0到還未來排序的最大下標,總是把最大的數字放在后面
 18       for(int k = 0;k < arrys.length-j-1; k++){
 19         if(arrys[k] > arrys[k+1]){ //判斷當前數字與后面數字的大小
 20           temp = arrys[k];
 21           arrys[k] = arrys[k+1];
 22           arrys[k+1] = temp; //用temp變量進行換值
 23         }
 24       }
 25    }
 26     bubblePrint(arrys); //打印
 27   }
 28   //打印方法
 29   public static void bubblePrint(int[] before){
 30     for(int i = 0;i < before.length; i++){ //遍歷
 31       System.out.print(before[i] + ""); //打印,以空格隔開
 32     }
 33     System.out.println();//換行
 34   }
 35 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM