原理类似桶排序,同样需要一个很大的鸽巢[桶排序里管这个叫桶,名字无所谓了]

鸽巢其实就是数组啦,数组的索引位置就表示值,该索引位置的值表示出现次数,如果全部为1次或0次那就是桶排序

例如

var pigeonHole = new int[100];

pigeonHole[0]的值表示0的出现次数...

pigeonHole[1]的值表示1的出现次数...

pigeonHole[2]的值表示2的出现次数...

/// 鸽巢排序
/// </summary>
/// <param name="unsorted">待排数组</param>
/// <param name="maxNumber">待排数组中的最大数,如果可以指定的话</param>
/// <returns></returns>
static int[] pogeon_sort(int[] unsorted, int maxNumber = 10)
{
int[] pogeonHole = new int[maxNumber + 1];
foreach (var item in unsorted)
{
pogeonHole[item]++;
}
return pogeonHole;
/*
* pogeonHole[10] = 4; 的含意是
* 在待排数组中有4个10出现,同理其它
*/
} static void Main(string[] args)
{
int[] x = { 99, 65, 24, 47, 47, 50, 99, 88, 66, 33, 66, 67, 31, 18, 24 };
var sorted = pogeon_sort(x, 99);
for (int i = 0; i < sorted.Length; i++)
{
for (int j = 0; j < sorted[i]; j++)
{
Console.WriteLine(i);
}
}
Console.ReadLine();
}

  

最新文章

  1. ios 单例设计模式
  2. ecshop增加新字段及相应编辑器
  3. linux kernel 0.11 head
  4. 基于MyEclipse+9.0+++Tomcat+7.0的SSH+平台搭建
  5. PHPExcel 多工作表 导出
  6. Orchard是一个了不起CMS(内容管理系统)
  7. C++实现密码强度测试
  8. Java 面试总结(一) —— 面试常问的关键字总结
  9. java课程设计---计算器(201521123020 邱伟达)
  10. bzoj 3717: [PA2014]Pakowanie
  11. jodatime 时间比较
  12. 【网络编程】服务端产生大量的close_wait状态的进程分析
  13. P3690 【模板】Link Cut Tree (动态树)
  14. 20155202张旭 Exp7 网络欺诈技术防范
  15. 如何向妻子解释OOD
  16. Android Studio 出现 Gradle&#39;s dependency cache may be corrupt 错误分析
  17. jsonp 遍历文档
  18. Apple Notification Center Service--ANCS【转】
  19. 《Linux实验要求》
  20. 动态规划——最长公共上升子序列LCIS

热门文章

  1. 业务迁移---web
  2. asp.net .net4.0使用异步编程
  3. 关于JS里面写JAVA代码的问题
  4. win7 x64+iis7.5 配置错误:CS0016: 未能写入输出文件&ldquo;c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\7cb4f3
  5. C# 4 中使用迭代器的等待任务
  6. Ehcache概念篇
  7. Linux中实现在系统启动时自动加载模块
  8. delphi怎样单步调试
  9. 【nginx】nginx:利用负载均衡原理实现代码的热部署和灰度发布
  10. Shell中sort-cut-wc详解