前言:算法讲究的是逻辑思维,然后再用代码去实现你的逻辑,因此,你的逻辑思维很重要。
int[] array = {22, 33, 12, 54, 8, 90, 66, 7};
冒泡排序的逻辑:
第一次遍历:首先拿下标0位置的数据和下标1位置的数据作比较,大的数据往后排;然后1位置的数据和2位置的数据作比较,大的数据往后排,以此类推,遍历到n-1的数据;
第一次排完序的结果:{22, 12, 33, 8, 54, 66, 7, 90}第二次遍历:拿下标0位置的数据和下标1位置的数据作比较,大的数据往后排;然后1位置的数据和2位置的数据作比较,大的数据往后排,以此类推,遍历到n-2的数据;
第二次排完序的结果:{12, 22, 8, 33, 54, 7, 66, 90}第三次遍历:拿下标0位置的数据和下标1位置的数据作比较,大的数据往后排;然后1位置的数据和2位置的数据作比较,大的数据往后排,以此类推,遍历到n-3的数据;
第三次排完序的结果:{12, 8, 22, 33, 7, 54, 66, 90}....
第N次排完序的结果:{7, 8, 12, 22, 33, 54, 66, 90}
总结规律:冒泡排序是两两交换比较大小,大的往后排,第一次遍历完后数组最大的数在最后面,即在数组下标为n-1的位置,第二次遍历只需要遍历到n-2的位置就可以了。
话不多说,上代码:
public static void main(String[] args) {
int[] array = {22, 33, 12, 54, 8, 90, 66, 7};
bubbleSort(array);
printArray(array);
}
/**
* 冒泡排序
*
* @param array 需要排序的数组
*/
private static void bubbleSort(int[] array) {
if (array == null || array.length < 2) {
return;
}
int len = array.length;
for (int i = 0; i < len; i++) {
for (int j = 1; j < len - i; j++) {
if (array[j] < array[j-1]) {
int temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
}
}
}
}
/**
* 打印数组
*
* @param array 需要打印的数组
*/
private static void printArray(int[] array) {
for (int i : array) {
System.out.print(i + " ");
}
System.out.println();
}
运行结果:

版权声明:本文为qq_38023862原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。