一、冒泡排序算法原理:
相邻两节点进行比较,大的向后移一个,通过第一轮两两比较和移动,最大的元素移动到了最后, 第二轮次大的位于倒数第二个,依次进行。
二、代码实现:
若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);
}
}
}
}
复制代码