题目要求出给出奇数个数的排在中间的数。借助计数排序的思想,用空间换时间的策略,假设输入最大数为
max
,构建一个
int[max]
数组
number,
输入一个数
i
将
number [i]++,
然后
number[i+1]+=number[i];
此时
number[i]
存放数字小于
i
的个数,然后取中间的数输出,即
if(number[i]>=(N+1)/2) printf("%d/n",i);
即可。计数排序只适合待排序的数字是整数的情况。
关于计数排序的程序和带有详细注释的代码可以从
http://download.csdn.net/user/china8848/
获得。
Pku acm 2388 Who's in the Middle 排序算法解题报告(二)----计数排序
最新推荐文章于 2024-08-29 16:57:08 发布