本文主要是介绍数组拓展——冒泡排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
冒泡排序
- 当我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为O(n2)
public class ArrayDemo07 {
public static void main(String[] args) {
int[] arrays = {2,1,5,63,7,54,21,9};
int[] sort = sort(arrays);
//System.out.println(Arrays.toString(sort));
ArrayDemo04.printArray(sort(arrays));
}
//比较数组中相邻的元素,如果第一个数比第二个数大,那么交换两个数的位置
//每一次比较,都会产出一个最大,或者最小的数字
//下一轮则可以少一次排序
//依次循环,直到结束!
public static int[] sort(int[] array){
//临时变量
int temp = 0;
boolean flag = false;//
//外层循环,判断要走多少次
for (int i = 0; i < array.length-1; i++) {
boolean flag = false;//通过flag标识符减少没有意义的比较,用来优化时间复杂度
//内层循环,交换位置
/*
for (int j = 0;j < array.length-1-i;j++){
if (array[j+1]>array[j]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
*/
for (int j = array.length-1;j>i;j--){
if (array[j-1]<array[j]){
temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
}
}
if(flag==false){
break;
}
}
return array;
}
}
这篇关于数组拓展——冒泡排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!