1.算法原理

鸽巢排序是对桶排序算法的改进,只是桶中装对应下标放元素出现的次数

待排序数组:a[14] ={ 6, 6, 2, 2, 2, 4, 1, 1, 1, 5, 5, 5, 5, 9 };

桶中: bucket[10]=0  3  3  0  1  4  2  0  0  1

1出次3次,所以bucket[1]=3

2出次3次,所以bucket[2]=3

4出次1次,所以bucket[4]=1

5出次4次,所以bucket[5]=4

6出次2次,所以bucket[6]=2

9出次1次,所以bucket[9]=1

2.代码实现

#include <stdio.h>//printArray打印出数组
void printArray(int a[],int size){  //   printf("数组为:[%d] ",a[0]);  for (int i=0;i<size;i++)  {  printf(" %x ",a[i]);  }  printf("\n");
}void main()
{int  a[14] ={ 6, 6, 2, 2, 2, 4, 1, 1, 1, 5, 5, 5, 5, 9 };int  len=14;//分配空桶int  bucket[10]={0} ;printf("排序前:");printArray(a,len);//直接以每个待排数字为索引,将自己的值赋值给当前桶for (int i = 0; i < len; i++) {bucket[a[i]]++;}printf("桶中:");printArray(bucket,10);//跳过值为0的空桶,顺序输出即可int temp=0;for (int j = 0; j < 10; j++){while(bucket[j]-->0)a[temp++]=j;}printf("排序后:");printArray(a,len);}

3.排序结果

排序前: 6  6  2  2  2  4  1  1  1  5  5  5  5  9
桶中: 0  3  3  0  1  4  2  0  0  1
排序后: 1  1  1  2  2  2  4  5  5  5  5  6  6  9

鸽巢排序Pigeonhole Sort----(排序算法八)相关推荐

  1. 经典排序算法 - 鸽巢排序Pigeonhole sort

    经典排序算法 - 鸽巢排序Pigeonhole sort 原理类似桶排序,同样需要一个很大的鸽巢[桶排序里管这个叫桶,名字无所谓了] 鸽巢其实就是数组啦,数组的索引位置就表示值,该索引位置的值表示出现 ...

  2. C语言鸽巢排序pigeonhole sort算法(附完整源码)

    鸽巢排序pigeonhole sort算法 鸽巢排序pigeonhole sort算法的完整源码(定义,实现,main函数测试) 鸽巢排序pigeonhole sort算法的完整源码(定义,实现,ma ...

  3. golang的int64排序_golang sort —— 排序算法

    该包实现了四种基本排序算法:插入排序.归并排序.堆排序和快速排序. 但是这四种排序方法是不公开的,它们只被用于sort包内部使用.所以在对数据集合排序时不必考虑应当选择哪一种排序方法,只要实现了sor ...

  4. c语言sort函数从小到大排序指针,sort排序是从小到大

    java数组排序问题:array.sort()是从小到大排序,别告诉我从i=a.length开始打印然后i.因为数组没变啊,只是打印顺序变Integer [] array=new Integer[]{ ...

  5. linux sort命令 排序,Linux sort排序方法

    在文件的操作过程中,因为文件过多,往往需要进行一下排序,排序方法也就是从小到大排序或者从大到小排序.比如我们从nginx日志中需要找到访问量最长的url,那就需要对请求时间进行一个排序,根据请求时间长 ...

  6. 奇偶排序(OddEven Sort)----(排序算法十一)

    1.算法原理 2.代码实现 #include <stdio.h>//printArray打印出数组 void printArray(int a[],int size){ printf(&q ...

  7. 鸡尾酒排序Cocktail Sort(排序算法九)

    1.算法原理 2.代码实现 #include <stdio.h>//printArray打印出数组 void printArray(int a[],int size){ printf(&q ...

  8. python列表反向排序_Python 列表排序方法reverse、sort、sorted详解

    python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...

  9. 【离散数学】集合论 第四章 函数与集合(3) 鸽巢原理

    本文属于「离散数学」系列文章之一.这一系列着重于离散数学的学习和应用.由于内容随时可能发生更新变动,欢迎关注和收藏离散数学系列文章汇总目录一文以作备忘.此外,在本系列学习文章中,为了透彻理解数学知识, ...

  10. 【c/c++编程-排序问题】成绩排序、整数奇偶排序、国名排序、日志排序、字符串排序

    目录 成绩排序 整数奇偶排序1.0 成绩排序2.0 国名排序 日志排序 整数奇偶排序2.0 字符串排序 解一 解二 字符串排序3 后缀子串排序 EXCEL排序 特殊排序 成绩排序3.0 大整数排序 成 ...

最新文章

  1. 参加java培训,要避免这几个误区!
  2. 《漫画算法2》源码整理-7 第K大的数字
  3. 国内大学毕业论文LaTeX模板集合
  4. Asp.net mvc 添加Jquery UI
  5. VTK:小部件之ImplicitPlaneWidget2
  6. php送数据找不到表,php – 数据源默认值中找不到的模型表
  7. 登录界面转换实现html,html5和css3登录注册表单界面切换动画
  8. hadoop的作业提交过程之yarn
  9. [bzoj3668][Noi2014]起床困难综合症/[洛谷3613]睡觉困难综合症
  10. win10 C语言qt调试,如何在Windows中调试Qt(MSVC)应用程序
  11. 《华为交换机学习指南》学习笔记·一
  12. Docker镜像下载到本地及恢复
  13. xlsx xlsx-style 设置导出的exce表格样式
  14. 计算机没有休眠睡眠状态,电脑没有睡眠模式_电脑怎么没有睡眠模式
  15. 基于QT实现的可视化链表(单链表、循环链表、双向链表)
  16. 前端 几个好看的button
  17. 【Python学习】数据归一化Scaling与标准化Normalization间的区别与相关实现
  18. 银行管理系统(c链表实现)
  19. 谢国忠:不能因自身利益驱动而散布违背经济规律的言论
  20. 创业三部曲之一――学技术

热门文章

  1. 20 统计量及其抽样分布——样本比例的抽样分布
  2. Word章节自动编号+公式编号
  3. UnicodeTOGB,能够将Unicode串转换成GB码,方便开发。
  4. uk码对照表_鞋码对照表_UK鞋码对照表
  5. 搜狗搜索php,搜狗搜索公众号内容提取
  6. 桌面窗口管理器占用过高解决办法
  7. 桌面管理 | Windows自带工具
  8. c语言程序设计张新成课后习题答案,C语言练习题2
  9. Android 发送短信自定义手机号自定义短信内容
  10. Excel VBA为表格设置“打开文件密码”