1、氣泡排序演算法原理:
相鄰兩節點進行比較,大的向後移一個,經過第一輪兩兩比較和移動,最大的元素移動到了最後,
第二輪次大的位於倒數第二個,依次進行。
2、程式碼實現:
若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);
}
}
}
}
複製程式碼