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