一、冒泡排序算法原理:
相鄰兩節點進行比較,大的向後移一個,通過第一輪兩兩比較和移動,最大的元素移動到了最後, 第二輪次大的位於倒數第二個,依次進行。
二、代碼實現:
若n表示數組長度,循環排序次數爲n-1;第i次的比較次數爲n-i次算法
/**
* @author wxf
* @date 2019/1/15 14:04
**/
public class BubbleSort {
public static void main(String[] args) {
int[] a = {1, 6, 5, 3, 13, 7, 11, 9};
//sort(a);
sortArray(a,a.length-1,1);
System.out.println(Arrays.toString(a));
}
/**
* 非遞歸
* @param arr
*/
private static void sort(int[] arr) {
//排序次數
for (int i = 0; i < arr.length - 1; i++) {
//排序比較次數
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
/**
* 遞歸實現
* @param array
* @param m
* @param n
*/
public static void sortArray(int[] array, int m, int n) {
if (m > 0) {
if (array[n] < array[n - 1]) {
int temp = array[n];
array[n] = array[n - 1];
array[n - 1] = temp;
}
if (n >= m) {
sortArray(array, m - 1, 1);
} else {
sortArray(array, m, n + 1);
}
}
}
}
複製代碼