冒泡排序的道理及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
經測試,與實例中成果分歧。