首页 > 代码库 > 算法练习4---冒泡排序java版

算法练习4---冒泡排序java版

冒泡排序的基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

借用嘻哈算法这本书中的一张图

技术分享

 

如果有n 个数进行排序,只需将n-1 个数归位,也就是说要进行n-1 趟操作。而“每一趟”都需要从第1 位开始进行相邻两个数的比较,将较小的一个数放在后面,比较完毕后向后挪一位继续比较下面两个相邻数的大小,重复此步骤,直到最后一个尚未归位的数,已经归位的数则无需再进行比较。

java程序代码如下:

public class PaiXu {

    public static void main(String[] args) {

          PaiXu px = new PaiXu();
          int[] score = {5,3,5,2,8,0,7,10,4};

/*
         * 20170205冒泡排序
         */
        int[] bubbleSortResult = px. bubbleSort(score);
        for(int i=0;i<score.length;i++){
            System.out.print(bubbleSortResult[i]+"    ");
        }
    }
    /*
     *  冒泡排序
     *  @param score 分数(0-10分)
     *  @return 返回计数数组
     *  说明:有n个数,相邻两个数比较,如果前面的数比后面的数小就交换位置,假设把一个最小的数放在最后面归位为一趟,需要比较1~n-1趟,设趟数为i,每趟比较次数为1~n-i次
     */
    public int[]  bubbleSort(int[] score){
        int a=0;
        int n=score.length;
        for(int i=1;i<=n-1;i++){
            for(int j=1;j<=n-i;j++){
                if(score[j-1]<score[j]){
                    a=score[j-1];
                    score[j-1]=score[j];
                    score[j]=a;
                }
            }
        }
        return score;
    }
}

代码执行结果为:

10    8    7    5    5    4    3    2    0    

 

算法练习4---冒泡排序java版