算法基础:冒泡排序实现从大到小输出成绩数组

北城以北 提交于 2020-02-27 23:55:51

需求:逐个输入10个学生成绩,并将从大到小输出。

分析:可使用冒泡排序将成绩数组进行交换排序

冒泡排序示例代码:

void bubbleSort(int[] a){
    int temp;
    for(int i = 1;i < a.length;i++) {
        for(int j = 0;j < a.length - i; j++) {
            if(a[j] > a[j+1]) {
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
        System.out.print(String.format("第 %d 步排序结果:",i));
        for(int k = 0; k < a.length; k++){
            System.out.print(a[k] + "  ");
        }
        System.out.println();
    }
}

实现从大到小打印成绩数组: 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class StuduentScore2 {
    // 逐个输入10个学生的成绩,并将其从大到小输出
    // 10个学生保存到常量final int N = 10;
    // 输入:保存到double[] scores中
    // 从大到小用冒泡排序double[] sort(double[] nums){}方法

    private static final int N = 10;
    private static double[] scores = new double[N];

    public static double[] sort(double[] nums){
        for(int k = 1; k < N; k ++) {
            for(int index = 0;index < N -k; index++){
                if(nums[index] < nums[index + 1]){
                    double tmp = nums[index];
                    nums[index] = nums[index + 1];
                    nums[index + 1] = tmp;
                }
            }
            System.out.print(String.format("第 %d 步排序结果是:",k));

            for(int i = 0; i < N; i++) {
                System.out.print(nums[i] + " ");
            }
            System.out.println();
        }
        return nums;
    }

    public static void main(String[] args) throws IOException {
        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
        int count = 0;
        while (count < N){
            while (true){
                System.out.println(String.format("请输入第%d个学生的成绩",count+1));
                String str = buf.readLine();
                scores[count] = Double.parseDouble(str);
                if(scores[count] < 0 || scores[count] >100) {
                    System.out.println("请重新输入!");
                }else{
                    count ++;
                    break;
                }
            }
        }
        double[] scoresNew = sort(scores);
        System.out.print(String.format("这 %d位同学的成绩排序为:",N));
        for(int i = 0; i < N; i++){
            System.out.print(scoresNew[i] + "  ");
        }
    }
}

代码实现结果如下:

请输入第1个学生的成绩
86
请输入第2个学生的成绩
72
请输入第3个学生的成绩
68
请输入第4个学生的成绩
74
请输入第5个学生的成绩
58
请输入第6个学生的成绩
92
请输入第7个学生的成绩
81
请输入第8个学生的成绩
63
请输入第9个学生的成绩
52
请输入第10个学生的成绩
80
第 1 步排序结果是:86.0 72.0 74.0 68.0 92.0 81.0 63.0 58.0 80.0 52.0 
第 2 步排序结果是:86.0 74.0 72.0 92.0 81.0 68.0 63.0 80.0 58.0 52.0 
第 3 步排序结果是:86.0 74.0 92.0 81.0 72.0 68.0 80.0 63.0 58.0 52.0 
第 4 步排序结果是:86.0 92.0 81.0 74.0 72.0 80.0 68.0 63.0 58.0 52.0 
第 5 步排序结果是:92.0 86.0 81.0 74.0 80.0 72.0 68.0 63.0 58.0 52.0 
第 6 步排序结果是:92.0 86.0 81.0 80.0 74.0 72.0 68.0 63.0 58.0 52.0 
第 7 步排序结果是:92.0 86.0 81.0 80.0 74.0 72.0 68.0 63.0 58.0 52.0 
第 8 步排序结果是:92.0 86.0 81.0 80.0 74.0 72.0 68.0 63.0 58.0 52.0 
第 9 步排序结果是:92.0 86.0 81.0 80.0 74.0 72.0 68.0 63.0 58.0 52.0 
这 10位同学的成绩排序为:92.0  86.0  81.0  80.0  74.0  72.0  68.0  63.0  58.0  52.0

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!