public class ArrayDome7 {
/*
冒泡拍寻是最为出名的排序算法之一,总共又八大paixu
冒泡排序的代码是:两层循环,外层冒泡轮数,里层依次比较
时间复杂度为O(n2)
如何优化呢?
优化想法1:如果原数组中存在相同的数字就不需要比较了
那么可以少比较一次
*/
public static void main(String[] args) {
int[] a = {123,345,234,576,23,4646};
int[] b = sort(a);
System.out.println(Arrays.toString(b));
}
public static int[] sort(int[] array){
/*
1、比较数组中相邻的两个元素,如果二者有大小则交换
2、每一次比较,都会比较出最大或者最小,那么下一轮可以少比较一次
3、依次循环,直到结束
*/
//用来存放数据元素的临时变量
int temp = 0;
//外层循环,判断一个数组总共要比较大小多少次
for (int i = 0; i < array.length-1; i++) {
boolean flag = false;//通过标志控制循环
//内层循环,判断上一次比较完还需要比较多少次
for (int j = 0; j < array.length-1-i; j++) {
//比较数据元素的大小,如果后一个数比前一个大 则交换位置
if (array[j+1]>array[j]){
temp = array[j+1];
array[j+1] = array[j];
array[j] = temp;
flag = true; //当两个元素进行了比较 那么两个元素不相同 为真
}
}
if(flag==false){ //如果两个元素相同就不会进行上面的比较 flag的值不变
break; //结束本次循环
}
}
return array;
}
}
标签:Java,int,元素,冒泡排序,flag,循环,array,比较
From: https://www.cnblogs.com/onlyxue/p/16756305.html