Java冒泡排序

Java冒泡排序

冒泡排序:
1.比较相邻的元素,如果第一个比第二个大就交换它们二个
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,最后的元素应该是最大的数
3.针对所有的元素重复以上的步骤,除了最后一个
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

首先在main主方法里面定义一个数组
int[] values1 = {3,6,1,2,9,0,4,7,5,8,10,11};
然后在main主方法外面在写一个方法bubbleSore
int temp=0;//先声明temp为0
在写二个for循环表示要比较多少轮,if判断语句表示比较大小交换位置。最后在主方法里面调用
bubbleSore方法,输出结果
代码如下:
public static void main(String[] args) {
int[] values1 = {3,6,1,2,9,0,4,7,5,8,10,11};//定义数组
bubbleSore(values1);
System.out.println(“冒泡排序结果:”+Arrays.toString(values1));
}
public static void bubbleSore(int[] values1){
int temp=0; //声明temp为0
for(int i=0;i<values1.length;i++){//表示比较多少轮 length-1
for(int j = 0;j<values1.length-1-i;j++){
if(values1[j] >values1[j+1]){ //比较大小交换位置
temp = values1[j]; //如果前面的数比后面的数大就交换位置
values1[j] = values1[j+1];
values1[j+1] = temp;
}
}
}
}

输出结果图如下:
Java冒泡排序

还有一种写法可以看到冒泡排序以及优化;
只不过都是写在主方法里面不需要调用其他方法。和上面一样首先也是定义一个数组,声明temp为0,然后也是在写二个for循环表示要比较多少轮,if判断语句表示比较大小交换位置中间用true和false判断是否冒泡完成,最后写一个if判断break跳出循环完成冒泡。

代码如下:
public static void main(String[] args) {
//冒泡排序以及优化
int[] values = { 3, 1, 6, 2, 9, 0, 7, 4, 5, 8 };//定义数组
int temp = 0 ;//声明temp为0
for(int i=0;i<values.length-1;i++){//表示比较多少轮 length-1
boolean flag = true;//是否冒泡完成
for(int j=0; j<values.length-1-i; j++){
//比较大小,换顺序
if(values[j]>values[j+1]){ //如果前面的数比后面的数大就交换位置
temp = values[j];
values[j] = values[j+1];
values[j+1] = temp;
flag = false;//还没交换完继续冒泡排序
}
System.out.println(Arrays.toString(values));
}
if(flag){//判断当冒泡排序完后跳出循环
System.out.println(“结束!!!”);
break;
}
System.out.println("##################");//分割线
}
}
输出结果图如下:

Java冒泡排序