• 排序之计数排序


     1 #include <iostream>
     2 using namespace std;
     3 const int MAXN=100000;
     4 const int k=1000;
     5 int a[MAXN],c[MAXN],ranked[MAXN];//统计数组中每个值为i的元素出现的次数,存入数组C的第i项  
     6 int main()
     7 {
     8     int n;
     9     cin>>n;//n个数需要排
    10     for(int i=0;i<n;i++){
    11         cin>>a[i];//输入n个数
    12         ++c[a[i]];//统计重复个数,c[a[i]]中存放了值为a[i]的元素的个数 。
    13     }         //一位数的序列对基数排序来说就是一个计数排序 
    14     for(int i=1;i<k;i++){
    15         c[i]+=c[i-1];
    16         // 通过在c中记录计数和,c[i]中存放的是小于等于i元素的数字个数 ,计票 
    17     }
    18 
    19     for(int i=n-1;i>=0;i--){
    20         ranked[c[a[i]]-1]=a[i];//反向填充目标数组。投票过程结束,每人都拥有自己的票数,桶数组说,看好你自己的票数,进入与你票数相等的桶
    21         c[a[i]]--;
    22     }
    23     for (int i = 0; i < n; ++i)
    24                 cout << ranked[i] << endl;
    25         return 0;
    26 }
  • 相关阅读:
    如何在自定义端口上运行 Spring Boot 应用程序?
    FileUpload拦截器
    UI标签
    OGNL
    你对测试最大的兴趣在哪里?为什么?
    举例说明同步和异步。
    git 克隆分支
    JQuery 选择器
    JQuery对象和Dom对象
    简单的JQuery之Ready
  • 原文地址:https://www.cnblogs.com/wsw-seu/p/8399695.html
Copyright © 2020-2023  润新知