Java 冒泡排序 -11天 学习笔记

冒泡排序

总共有8大排序但是冒泡排序最为出名

冒泡的代码也很简单

外层判断走多少次
内层依次比较判断

public static void main (String[] args){
    
    
//冒泡排序
/*
1.比较数组中,两个相邻的元素,如果第一个数比二个数大就调换他们的位置
2.每一次比较就会产生一个最大,一个最小的数
3.下一次就可以少排一次序
4.依次循环直到结束
*/
int[] a = {
    
    5,555,2,99,816,21546,1};
sort(a);
// int sort = sort(a);调用完我们的方法以后返回一个重新排列的数组
 System.out.println(Arrays.toString(a));
}
public static int[]  sort (int[] arrays){
    
    
 //建立一个临时变量temp
 int temp = 0;
  //外层循环判断我们需要走多少次
 for (int i = 0;i<arrays.length-1;i++){
    
    
/*内层循环,设置一个为0的数,在比较a,b两个数,如过a比b大	则a与0交换,b在与0交换,a在与0交换,处于一个三角形交换。	*/	//通过flag标志符来减少没有意义的比较
 boolean flag = false;
		
 for(int j = 0;j<arrays.length-1-i;j++){
    
    
	//length-1-i是为了保证不超过i
  if(arrays[j] > arrays[j+1]){
    
    
	temp = arrays[j];
	arrays[j] = arrays[j+1];
	arrays[j+1] = temp;
	flag = true;
	}
  }
		
	}return arrays;
}
package com.oop.Demo07;
//冒泡排序
public class Demo01 {
    
    
    public static void main(String[] args) {
    
    
        //1.创建一个数组
        int[] array = {
    
    54,43,2,4,94,23,24};

        //2.遍历数组
        for (int i = 0; i < array.length-1;i++) {
    
    
            //如果有8个元素就只会比较7次所以小于array.length-1
            for (int j = 0; j < array.length-1-i; j++) {
    
     //外层判断循环多少次
                //array.length-1-i  每一轮都减了一次i,所以在-1的基础上减-i
                //判断数组中的大小
                boolean flag = true;
                if(array[j] > array[j+1]){
    
    
                    //int一个空变量进行交换
                    int temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                    flag = true;
                }
            }
        }
        
        //遍历排完序后的数组
        for (int a : array) {
    
    
            System.out.print(a+" ");
        }
        System.out.println();
    }
}

我们看到嵌套循环立马可以得到这个算法的时间复杂度为O(n2)

猜你喜欢

转载自blog.csdn.net/yibai_/article/details/114648409