1、冒泡排序
1.1 介绍
冒泡排序(Bubble Sorting) 的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后面,就像水底下的气泡一样逐渐向上冒。
图解:
数组元素随次数变化:
1.2 代码实现
1.2.1 基本实现
代码:
public class BubbleSort {
public static void main(String[] args) {
int[] arr1 = {
9, 5, 6, 8, 2, 7, 3, 4, 1 };
int temp = 0; // 用于交换
for (int i = 0; i < arr1.length - 1; i++) {
for (int j = 0; j < arr1.length - i - 1; j++) {
// 如果前面的数比后面的数大,就直接交换
if (arr1[j] > arr1[j + 1]) {
temp = arr1[j];
arr1[j] = arr1[j + 1];
arr1[j + 1] = temp;
}
}
System.out.println("第" + (i + 1) + "趟后的数组元素");
System.out.println(Arrays.toString(arr1));
}
// 输出最后的结果
System.out.println("最终结果:");
for (int i : arr1) {
System.out.print(i + " ");
}
}
}
1.2.2 优化
当给定的数组,在一次循环中没有任何的交换时,表明这个数组已经是有序的,就不用继续进行下面的循环,从而提前结束;
例如:int [] arr1= {1,2,4,3};
使用上面的代码,流程如下:
在第二次交换时就没有交换了,可以直接结束,优化后流程:
优化的代码: 在代码中添加一个判断,在此次循环中是否有数据交换。
public class BubbleSort {
public static void main(String[] args) {
int [] arr1= {
1,2,4,3};
int temp=0; //用于交换
boolean flag=false; //优化,判断循环是否发生交换
for(int i=0;i<arr1.length-1;i++) {
for(int j=0;j<arr1.length-i-1;j++) {
//如果前面的数比后面的数大,就直接交换
if(arr1[j]>arr1[j+1]) {
flag=true;
temp=arr1[j];
arr1[j]=arr1[j+1];
arr1[j+1]=temp;
}
}
if(!flag) {
break; //没有交换直接结束
}else {
flag=false; //重置flag,方便下一次循环使用
}
System.out.println("第"+(i+1)+"趟后的数组元素");
System.out.println(Arrays.toString(arr1));
}
//输出最后的结果
System.out.println("最终结果:");
for (int i : arr1) {
System.out.print(i+" ");
}
}
}
今天的文章冒泡排序java代码实现_c++冒泡排序分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/74688.html