入门级编程与数学

专题:冒泡排序

2017-03-14  本文已影响5人  Xplorist

正宗的冒泡思路:(从大到小排列:将小数往下冒)

第一个数和第二个数比较,然后将小的一个数往后面挪,知道挪到最后一位,就得到了第一个最小的数了。将小数往下冒。
关键的是想清楚两次循环的次数,还有中间重复的次数。

 /**
 * 将数组从大到小排序:
 * 5 7 2 9 1 8 3 2 0 6 4 
 * 第1次:a[0]<a[1]交换
 * 7 5 2 9 1 8 3 2 0 6 4 
 * 第2次:a[1]<a[2]不交换
 * 7 5 2 9 1 8 3 2 0 6 4 
 * 第3次:a[2]<a[3]交换
 * 7 5 9 2 1 8 3 2 0 6 4 
 * 第4次:a[3]<a[4]不交换
 * 7 5 9 2 1 8 3 2 0 6 4 
 * 第5次:a[4]<a[5]交换
 * 7 5 9 2 8 1 3 2 0 6 4 
 * 第6次:a[5]<a[6]交换
 * 7 5 9 2 8 3 1 2 0 6 4 
 * 第7次:a[6]<a[7]交换
 * 7 5 9 2 8 3 2 1 0 6 4 
 * 第8次:a[7]<a[8]不交换
 * 7 5 9 2 8 3 2 1 0 6 4 
 * 第9次:a[8]<a[9]交换
 * 7 5 9 2 8 3 2 1 6 0 4 
 * 第10次:a[9]<a[10]交换
 * 7 5 9 2 8 3 2 1 6 4 0 

 * */
    public void test7() {
        int[] a = { 5, 7, 2, 9, 1, 8, 3, 2, 0, 6, 4 };
        for (int n = 0; n < a.length - 1; n++) {
            for (int i = 0; i < a.length - 1 - n; i++) {
                if (a[i] < a[i - 1]) {
                    a[i] = a[i] + a[i - 1];
                    a[i - 1] = a[i] - a[i - 1];
                    a[i] = a[i] - a[i - 1];
                }
            }
        }
    }

我的冒泡思路:(从大到小排列:将大数往上冒)

第一个数依次和后面的每个数比较,然后将大的数放在第一个数的位置。直接将大数冒上来。

我自己的冒泡思路核心代码:

/**
 * 将给定数组(4,2,20,7,1,9,3)从大到小排序
 * */
    public void test5(){
        int[] a={4,2,20,7,1,9,3};
        
        System.out.println("排列前的数组:");
        for(int i=0;i<a.length;i++){
            System.out.print(a[i]+" ");
        }
        System.out.println();
        
        for(int i=0;i<a.length;i++){
            for(int j=i+1;j<a.length;j++){
                if(a[i]<a[j]){
                    a[i]=a[i]+a[j];
                    a[j]=a[i]-a[j];
                    a[i]=a[i]-a[j];
                }
            }
        }

上一篇下一篇

猜你喜欢

热点阅读