• 算法:桶排序(简易版)


    Question: 班上有5个同学参加考试(满分是10分),分别考了5分、3分、5分、2分和8分,请写一段程序将将分数从大到小进行排序。

    思路:申请一个一维数组来存放得分情况(得1分的有几个人,得2分的有几个人……),然后根据得分情况输出信息。

    因为满分是10分,所以我们要申请一个容量为11的数组arr。因为第一个人是5分,所以arr[5]=1;第二个人是3分,故arr[3]=1;第三个人是5分,故arr[5]=2;第四个人是2分,故arr[2]=8;第5个人是8分,故arr[8]=1。

    即8分出现了1次、5分出现了2次、3分出现了1次、2分出现了1次。
    接下来我们只需要将出现过的分数打印出来就行了!

     1 package com.guohao.arithmetics;
     2 
     3 public class BucketSort {
     4     public static void main(String[] args){
     5         int[] scores = {5,3,5,2,8};  //待排序的数组
     6         int[] arr = new int[11];  //桶子们
     7 
     8         for(int i=0; i<5; i++){
     9             arr[scores[i]]++;  //计数:每一个分数有几个人得
    10         }
    11 
    12         for(int i=0; i<11; i++){  //0~10分,每个分数出现了几次就打印几次
    13             for(int j=1; j<=arr[i]; j++){
    14                 System.out.print(i+" ");
    15             }
    16         }
    17 
    18     }
    19 
    20 
    21 }

    这个算法就好比有编号0~10的11个桶子,每出现一个数就往相应的桶子里放一个小旗子,最后只要数每个桶子里小旗子的个数就行了。

    • 对1~1000内的n个数进行排序:
       1 package com.guohao.arithmetics;
       2 
       3 import java.util.Scanner;
       4 
       5 /**
       6  * 对1~1000内的数进行排序
       7  */
       8 public class BucketSort {
       9     public static void main(String[] args){
      10         Scanner reader = new Scanner(System.in);
      11         int n = reader.nextInt();  //读入要排序的数据个数
      12         int[] arr = new int[1001];  //创建桶子数组
      13 
      14         for(int i=1; i<=n; i++){  //计数,在桶子里放小旗子
      15             int t = reader.nextInt();
      16             if(t<1 || t>1000){
      17                 System.out.println("输入数据不合要求,请重新输入!");
      18                 i--;
      19                 continue;
      20             }
      21             arr[t]++;
      22         }
      23 
      24         for(int i=1; i<=1000; i++){
      25             for(int j=1; j<=arr[i]; j++){
      26                 System.out.print(i+" ");  //出现了几次就将桶子的编号打印几次
      27             }
      28         }
      29 
      30         reader.close();
      31     }
      32 
      33 
      34 }
  • 相关阅读:
    Jenkins调用selenium找不到webdriver:selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary
    列表的基本操作
    jenkins集成发送测试报告的常见问题解决
    Chrome 浏览器前端调试技巧大揭秘
    搭建Redis三主三从集群
    Jenkins安装
    python中hasattr()、getattr()、setattr()函数的使用
    python单元测试之unittest框架
    python环境配置详细步骤
    Android:EditText 设置弹出数字输入法键盘
  • 原文地址:https://www.cnblogs.com/Seraph1999/p/12716939.html
Copyright © 2020-2023  润新知