冒泡排序-详解

冒泡排序是一种计算机科学领域的较简单的排序算法。
   它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

 冒泡排序使用的是两层循环,外层冒泡轮数,里层依次比较

冒泡排序思路:

  1.比较数组中,两个相邻的元素,如果第一个数,比第二个数大,我们就交换他们的位置

  2.每一次比较,都是会产生出最大或者最小

  3.下一轮可少一次排序

  4.依次到结束

 

public class HelloWorld {
    public static void main(String []args) {
      int []arr={9,2,5,1,3,6,7,1};
        int []a=Hil(arr);
        toString(a);
        
    }
    //冒泡排序方法
    public static int[] Hil(int []arr){
        //定义临时变量用来在循环中交换数组元素中的位置
        int tmp=0;
        boolean fal=false;//定义一个变量,用来减少,无用的循环
    //外层循环,判断我们交换完这个数组总共需要走多少次
        for(int i=0;i<arr.length-1;i++){//length-1这个-1呢,是为了不让我们的数组溢出
        //内层循环,比较两个数,如果第一个数,比第二个数大,则交接位置
        for(int j=0;j<arr.length-1-i;j++){//因为我们每一次遍历都会得出一个最大的数字,所以这个数字需要减掉
            if(arr[j]>arr[j+1]){//arr[j]:当前的数,arr[j+1]:后一个数,如果当前的数组元素,大于后一个数组元素,那我们就要交换他们的位置
                tmp=arr[j+1];//把后一个的数组元素传给临时变量,然后arr[j+1]就空了,这时就可以把当前的数组元素向后位移了
                arr[j+1]=arr[j];//把当前数组元素传给后一个数组元素的位置,然后arr[j+1]就空了,再把临时变量传过来就可以了
                arr[j]=tmp;//然后再把临时数组元素的值(tmp的原始值为后一位数),传给当前的数组元素,完成数组元素位置交换
                fal=true;//每成功循环一次,就把这个fal值变为true,如果数组元素传进来,没有经过排序,那他的值就为false,如果为false也就是没有产生比较的情况下,就表示他并没有乱序也就不需要进行循环,这样就能减少一次循环
                
            }        
        }
        if(fal=false){//如果等于false就表示此时循环中,没有乱序的情况了,那不用再循环了
        //解:132456789,这是一个数组,由小排到大,可以看得出数值5后面的数字我们是不需要比较了,所以这组数据我们只需比较数字5前面的值,就可以了,但是正常情况我们没有设置结束条件,会把九个数对比完,
            //那们设置完结束条件后,他们的交换方式是这样的
            /*1对比3,1小不用交换,132456789,fal置为true
              3对比2,3大,交换,123456789,fal置为true
              3对比4,3小,不交换,123456789,fal置为false
              当fal为false就会进入当前的判断,从而且结束方法
            */
        
        break;
        }
        }
    return arr;//完成交换后再把值,返回出去
    
    }
    //打印数组方法
    public static void toString(int []arr){
    for(int i=0;i<arr.length;i++){
    System.out.print(arr[i]);
    }
        
}
}

 

 

 

 
 
 
posted @ 2022-03-10 18:37  hollg  阅读(269)  评论(0)    收藏  举报