美文网首页
二、Java初级--4、冒泡排序算法

二、Java初级--4、冒泡排序算法

作者: cybeyond | 来源:发表于2018-03-01 16:13 被阅读0次

    将以下数组中的数据从小到达排序
    int[] numbers={18,32,26,11,9,13,24,35,24}

    思路:

    1. 相邻两个数进行比较,如果位置不对,进行交换,整个数组中未排序的数都比较了一遍叫做一趟。
    2. 把数组中的未排序元素都比较一遍叫做一趟,这一趟需要比较很多次才能完成。
    3. 每一趟只能保证把最大数挪到当前未排好序的数据的最后。
    4. 弄清楚一共需要比较多少趟。n-1
    5. 弄清楚每一趟需要比较多少次。第一趟需要比较n-1,后面随着趟数的增加,比较次数会逐渐减少,每次减少1。
    6. 外层循环控制趟数,内层循环控制每一趟要比较的次数。
    7. 在循环体中对位置不对数据的进行调整。


      原理
    package xinqushi;
    
    public class BubbleSort {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[] numbers={18,32,26,11,9,13,24,35,24};
            int n=numbers.length;
            for (int i=1;i<=n-1;i++){  //一趟,一共需要n-1趟
                boolean flag=false;  //算法优化
                for(int j=1;j<=n-i;j++){  //每一趟中,需要比较的次数,比较n-i次,每次减1
                    if(numbers[j-1]>numbers[j]){
                        int temp=numbers[j-1];
                        numbers[j-1]=numbers[j];
                        numbers[j]=temp;
                        flag=true;
                    }
                }
                if (!flag){  //算法优化,排除已经排好顺序,但还要两两比较的情况
                    break;
                }
            }
            for(int i=0;i<n;i++){
                System.out.print(numbers[i] + "\t");
            }
        }
    }
    
    结果

    相关文章

      网友评论

          本文标题:二、Java初级--4、冒泡排序算法

          本文链接:https://www.haomeiwen.com/subject/obrixftx.html