java基础-冒泡排序
一、基本思想
通过对待排序序列从前到后,依次比较相邻元素的值,若发现逆序则交换,使得值比较大的元素逐渐向后移动,值较小的元素往前移动。
二、冒泡排序过程
原始数组:2,6,1,8,5
第1躺排序
[2, 6, 1, 8, 5]
[2, 1, 6, 8, 5]
[2, 1, 6, 8, 5]
[2, 1, 6, 5, 8]
第2躺排序
[1, 2, 6, 5, 8]
[1, 2, 6, 5, 8]
[1, 2, 5, 6, 8]
第3躺排序
[1, 2, 5, 6, 8]
[1, 2, 5, 6, 8]
第4躺排序
[1, 2, 5, 6, 8]
三、代码
public static void dubboSort(int[] arr) {
int temp = 0;
boolean flag = false;
for (int i = 0; i < arr.length - 1; i++) {
System.out.println("第" + (i + 1) + "躺排序");
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
flag = true;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
System.out.println(Arrays.toString(arr));
}
System.out.println();
//此处做了一个优化,新增了一个是否发生逆序排列的判断,将此处打
//开实际排序次数就是三次,因为最后一次不发生值交换
// if (!flag) {
// break;
// } else {
// flag = false;
// }
}
}