国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 冒泡排序的原理及java代碼實現

冒泡排序的原理及java代碼實現

2020-03-26 13:58hebedich JAVA教程

冒泡排序法:關鍵字較小的記錄好比氣泡逐趟上浮,關鍵字較大的記錄好比石塊下沉,每趟有一塊最大的石塊沉底。算法本質:(最大值是關鍵點,肯定放到最后了,如此循環)每次都從第一位向后滾動比較,使最大值沉底,最小

概述

冒泡排序是一種簡單的排序算法。它重復地走訪要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到數列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的開始。

簡單點說,就是:

冒泡排序是將比較大的數字沉在數組的后面(可以理解為下面),較小的浮在前面(上面)。

直觀釋義圖:

 

步驟

比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數。
針對所有的元素重復以上的步驟,除了最后一個。
持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
實例

原始數據:

3 5 2 6 2
第一輪

?
1
2
3
4
5
6
7
8
9
比較 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都分別向上(前)冒出。

第二輪

?
1
2
3
4
5
6
7
比較 3 23 大于 2,交換位置
2 3 5 2 6
比較 3 55 大于 3,不需交換
2 3 5 2 6
比較 5 25 大于 2,交換位置
2 3 2 5 6
不需比較 5 6

第三輪

?
1
2
3
4
5
比較 2 33 大于 2,不需交換
2 3 2 5 6
比較 3 23 大于 2,交換位置
2 2 3 5 6
不需比較了

第四輪

?
1
2
比較 2 和 2,不需交換
2 2 3 5 6

四輪結束

2 2 3 5 6

代碼實現(Java)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
第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

經測試,與實例中結果一致。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜国产在线 | 久久久久久亚洲精品 | 福利片在线免费观看 | 免费看国产片在线观看 | www九九热 | 美女久久久 | 狠狠综合久久 | 黄色在线观看视频网站 | 午夜精品久久久久久久 | 国产视频1区2区 | 久久97视频 | 97久久超碰 | 97色在线观看免费视频 | 日韩不卡在线 | 国产精品亚洲精品 | 欧美精品一区二区三区在线 | 一级在线观看视频 | 日韩在线一区二区三区免费视频 | 久久久久久99 | av在线一区二区 | 一区二区三区在线视频播放 | 国产视频aaa| 午夜在线小视频 | 天天操网 | 久久a国产 | 精品视频一区二区 | 国内自拍视频在线观看 | 久久久久黄 | 在线电影亚洲 | 玖玖精品在线 | 一级a性色生活片久久毛片 国产精品久久久久久久久久免费看 | 国产精品欧美一区二区三区不卡 | 黄色av免费在线播放 | 欧美激情国产日韩精品一区18 | 亚洲精品一区二区三区蜜桃久 | 欧美日韩亚洲视频 | 成人妇女免费播放久久久 | 国产成人毛片 | 欧美日韩一区二区在线 | 一区二区福利 | 亚洲视频在线观看 |