
思路分析图
两个指针一起往后移动,比较大小逆序就交换,完成一趟则可以确认一个最大的数。
继续下一趟确认第二个较大的数

代码实现
import java.util.Arrays;
/**
* 冒泡排序
* 第一趟,比较相邻的两个(第i和i+1位置的)逆序则交换,i++后继续此操作,直到到 数组结束,完成一趟,此时最后一个即为最大的。
* 开始下一趟 只需要将前length-1个数字进行上述过程
* 直到最后一趟就剩一个数,结束排序
*/
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {2, 4, 1, 6, 3, 9};
// int[] arr = {1,2,3,4,5,6};
int temp;
for (int i = 0; i < arr.length - 1; i++) {
boolean flag = false;
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
flag = true;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.println("第" + (i + 1) + "趟排序:");
System.out.println(Arrays.toString(arr));
if (!flag) {
//如果这一趟没有发生过变化,则可以提前结束排序
break;
}
}
System.out.println("排序结果:");
System.out.println(Arrays.toString(arr));
}
}
本文详细介绍了一种简单的排序算法——冒泡排序。通过两层循环,不断比较相邻元素并交换顺序来实现排序。每完成一趟排序就能确定当前序列的最大值。文章通过示例代码展示了具体的实现过程,并介绍了如何通过优化提前终止排序。
2567

被折叠的 条评论
为什么被折叠?



