程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 冒泡排序的道理及java代碼完成

冒泡排序的道理及java代碼完成

編輯:關於JAVA

冒泡排序的道理及java代碼完成。本站提示廣大學習愛好者:(冒泡排序的道理及java代碼完成)文章只能為提供參考,不一定能成為您想要的結果。以下是冒泡排序的道理及java代碼完成正文


概述

冒泡排序是一種簡略的排序算法。它反復地訪問要排序的數列,一次比擬兩個元素,假如他們的次序毛病就把他們交流過去。訪問數列的任務是反復地停止直到數列曾經排序完成。這個算法的名字由來是由於越小的元素會經過交流漸漸“浮”到數列的開端。

簡略點說,就是:

冒泡排序是將比較年夜的數字沉在數組的前面(可以懂得為上面),較小的浮在後面(下面)。

直不雅釋義圖:

步調

比擬相鄰的元素。假如第一個比第二個年夜,就交流他們兩個。
對每對相鄰元素作異樣的任務,從開端第一對到開頭的最初一對。在這一點,最初的元素應當會是最年夜的數。
針對一切的元素反復以上的步調,除最初一個。
連續每次對愈來愈少的元素反復下面的步調,直到沒有任何一對數字須要比擬。
實例

原始數據:

3 5 2 6 2
第一輪

比擬 3 和 5,5 年夜於 3 ,不需交流
3 5 2 6 2
持續比擬 5 和 2,5 年夜於 2,交流地位
3 2 5 6 2
持續比擬 5 和 6,6 年夜於 5,不需交流
3 2 5 6 2
持續比擬 6 和 2,6 年夜於 2,交流地位
3 2 5 2 6
6 下沉到最初,兩個2都分離向上(前)冒出。

第二輪

比擬 3 和 2, 3 年夜於 2,交流地位
2 3 5 2 6
比擬 3 和 5, 5 年夜於 3,不需交流
2 3 5 2 6
比擬 5 和 2, 5 年夜於 2,交流地位
2 3 2 5 6
不需比擬 5 和 6

第三輪

比擬 2 和 3, 3 年夜於 2,不需交流
2 3 2 5 6
比擬 3 和 2, 3 年夜於 2,交流地位
2 2 3 5 6
不需比擬了

第四輪

比擬 2 和 2,不需交流
2 2 3 5 6

四輪停止

2 2 3 5 6

代碼完成(Java)

package com.coder4j.main.arithmetic.sorting;

public class Bubble {

  /**
   * 冒泡排序
   * 
   * @param array
   * @return
   */
  public static int[] sort(int[] array) {
    int temp;
    // 第一層輪回注解比擬的輪數, 好比 length 個元素,比擬輪數為 length-1 次(不需和本身比)
    for (int i = 0; i < array.length - 1; i++) {
      System.out.println("第" + (i + 1) + "輪開端");
      // 第二層輪回,每相鄰的兩個比擬一次,次數跟著輪數的增長赓續削減,每輪肯定一個最年夜的,不需比擬誰人最年夜的
      for (int j = 0; j < array.length - 1 - i; j++) {
        if (array[j + 1] < array[j]) {
          temp = array[j];
          array[j] = array[j + 1];
          array[j + 1] = temp;
        }
        System.out.println("第" + (i + 1) + "輪,第" + (j + 1) + "次比擬:");
        for (int k : array) {
          System.out.print(k + " ");
        }
        System.out.println();
      }
      System.out.println("成果:");
      for (int k : array) {
        System.out.print(k + " ");
      }
      System.out.println();
    }
    return array;
  }

  public static void main(String[] args) {
    int[] array = { 3, 5, 2, 6, 2 };
    int[] sorted = sort(array);
    System.out.println("終究成果");
    for (int i : sorted) {
      System.out.print(i + " ");
    }
  }

}

測試輸入成果:

第1輪開端
第1輪,第1次比擬:
3 5 2 6 2 
第1輪,第2次比擬:
3 2 5 6 2 
第1輪,第3次比擬:
3 2 5 6 2 
第1輪,第4次比擬:
3 2 5 2 6 
成果:
3 2 5 2 6 
第2輪開端
第2輪,第1次比擬:
2 3 5 2 6 
第2輪,第2次比擬:
2 3 5 2 6 
第2輪,第3次比擬:
2 3 2 5 6 
成果:
2 3 2 5 6 
第3輪開端
第3輪,第1次比擬:
2 3 2 5 6 
第3輪,第2次比擬:
2 2 3 5 6 
成果:
2 2 3 5 6 
第4輪開端
第4輪,第1次比擬:
2 2 3 5 6 
成果:
2 2 3 5 6 
終究成果
2 2 3 5 6 

經測試,與實例中成果分歧。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved