桶排序
2020-02-02 19:44
169 查看
直接给一个能排正负数的板子
#include<iostream> using namespace std; int main() { int book[100] = {0};//标志位,标记桶内正数数据量 int bookN[100] = { 0 };//标志负位 int input[11]; int heap[100] = {0};//初始化堆,排序0到100之间的数,heap[排序范围最大值] int i,j; int result; for (size_t i = 1; i <=10 ; i++) { cin >> input[i]; if (input[i]>=0)//排序的数为正数 { heap[input[i]] = 1; book[input[i]] += 1; //记录正数的数据量 } else//排序的数为负数 { input[i] = abs(input[i]); heap[input[i]] = 1; bookN[input[i]] += 1; //记录负数的数据量 } } for (int i = 99; i>=0; i--)//输出负数的排序结果,因为负数,所以桶从序号大的到序号小的遍历 { if (heap[i] == 1) { for (j = 1; j <= bookN[i]; j++) { result = 0 - i; cout << result << " ";//输出排序结果 } } } for (int i = 0; i <100 ; i++)//输出正数的排序结果 { if (heap[i]==1) { for ( j = 1;j<=book[i]; j++) { cout << i << " ";//输出排序结果 } } } cout << endl; getchar(); return 0; }
- 点赞
- 收藏
- 分享
- 文章举报