冒泡排序
一:冒泡排序的基本思想
通过对待排序序列从前向后,依次比较相邻元素的值,若发现逆序则进行交换,使值较大的元素逐渐从前移向后部,就行水底的气泡一样逐渐向上冒。
二:冒泡排序的规则
(1)一共进行n-1次循环
(2)每一趟排序的次数在逐渐减少,第i趟需要n-i-1次排序。
(3)如果我们发现在某趟排序中,没有发现一次交换,就可以提前结束冒泡排序了(优化)
三:时间复杂度
时间复杂度O(n^2)
四:代码演示
public class 冒泡排序 {
public static void main(String[] args) {
int[] arr={2,3,0,-5,1,10,6};
int temp=0;//临时变量
boolean flag=false;
//时间复杂度O(n^2)
for(int i=0;i<arr.length-1;i++){
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==false){
break;
}else{
flag=false;//重置flag,进行下次判断
}
}
}
}