• 模拟:桶排序


    以前认为负数不可做

    只需要多开点儿空间维护一下负数就好了

     1 #include<iostream>
     2 using namespace std;
     3 int main() {
     4     int book[100] = {0};//标志位,标记桶内数据量
     5     int bookN[100] = { 0 };//标志负位
     6     int input[11];
     7     int heap[100] = {0};//初始化堆,排序0到100之间的数,heap[排序范围最大值]
     8     int i,j;
     9     int result;
    10     for (size_t i = 1; i <=10 ; i++)
    11     {
    12         cin >> input[i];        
    13         
    14         if (input[i]>=0)//排序的数为正数
    15         {
    16             heap[input[i]] = 1;
    17             book[input[i]] += 1;
    18         }
    19         else//排序的数为负数
    20         {
    21             input[i] = abs(input[i]);
    22             heap[input[i]] = 1;
    23             bookN[input[i]] += 1;
    24             
    25             
    26         }
    27     }
    28     for (int i = 99; i>=0; i--)//输出负数的排序结果,因为负数,所以桶从序号大的到序号小的遍历
    29     {
    30         if (heap[i] == 1) {
    31             for (j = 1; j <= bookN[i]; j++)
    32             {
    33                 result = 0 - i;
    34                 cout << result << " ";//输出排序结果
    35             }
    36  
    37         }
    38     }
    39     for (int i = 0; i <100 ; i++)//输出正数的排序结果
    40     {
    41         if (heap[i]==1) {
    42             for ( j = 1;j<=book[i]; j++)
    43             {
    44                 cout << i << " ";//输出排序结果
    45             }
    46             
    47         }
    48     }
    49     cout << endl;
    50     getchar();
    51  
    52     return 0;
    53 }

    桶排序的时候你必须保证数据是离散的,离散程度是均一的

    而且数据范围不能让空间无法承受

  • 相关阅读:
    mysql_pw 指令 数据库创建过程
    node.js+mysql环境搭建
    MySQL 学习
    express 应用创建及app.js详解
    .NET MD5加密解密代码
    Axure 部件的交互样式
    easyUI -messager -消息框
    Window01
    linkbutton
    easyUi-datagrid 真分页 + 工具栏添加控件
  • 原文地址:https://www.cnblogs.com/aininot260/p/9629953.html
Copyright © 2020-2023  润新知