祭奠被遗忘的冒泡排序

冒泡算法(从小到大):

1、依次比较相邻的两个元素。若第一的值大于第二的值,则交换它们;

2、每轮将会把大值交换到数组尾;

3、因而每轮比较的次数越来越少;

public class BubbleSort_1 {

    public void BubbleSort_1(int[] score) {
        // 方法一:
        int j, i, temp;
        for (i = score.length - 1; i > 0; i--) {// 从小到大
            for (j = 0; j < i; j++) {
                if (score[j] > score[j + 1]) {// 每轮把最大的交换到后面
                    temp = score[j];
                    score[j] = score[j + 1];
                    score[j + 1] = temp;
                }
            }
            showDate(score); // 打印
        }
    }

    public void BubbleSort_2(int[] score) {
        // 方法二
        int j, i, temp;
        for (i = 0; i < score.length; i++) {// 从小到大
            for (j = i; j < score.length; j++) {
                if (score[i] > score[j]) {
                    /* >时,每轮最小的交换到前面,<时每轮最大的交换到前面 */
                    temp = score[i];
                    score[i] = score[j];
                    score[j] = temp;
                }
            }
            showDate(score);// 打印
        }
    }

    public void BubbleSort_3(int[] score) {
        // 方法三:
        int j, i, temp;
        for (i = 1; i < score.length; i++) {// 从大到小
            temp = score[i];
            for (j = i; j > 0 && score[j] > score[j - 1]; j--) {// 每轮最大的交换到前面
                score[j] = score[j - 1];
            }
            score[j] = temp;
            showDate(score); // 打印
        }
    }

    public void showDate(int[] n) {
        for (int i = 0; i < n.length; i++) {
            System.out.print("score[" + i + "] = " + n[i] + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        BubbleSort_1 s = new BubbleSort_1();
        int score[] = { 88, 99, 44, 77, 33, 22 };
        s.BubbleSort_1(score);
        //s.BubbleSort_2(score);
        //s.BubbleSort_3(score);

    }
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。