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

2018-03-01  本文已影响0人  cybeyond

将以下数组中的数据从小到达排序
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");
        }
    }
}
结果
上一篇下一篇

猜你喜欢

热点阅读