原理类似桶排序,这里总是需要10个桶,多次使用

首先以个位数的值进行装桶,即个位数为1则放入1号桶,为9则放入9号桶,暂时忽视十位数

例如

待排序数组[62,14,59,88,16]简单点五个数字

分配10个桶,桶编号为0-9,以个位数数字为桶编号依次入桶,变成下边这样

|  0  |  0  | 62 |  0  | 14 |  0  | 16 |  0  |  88 | 59 |

|  0  |  1  |  2  |  3  |  4 |  5  |  6  |  7  |  8  |  9  |桶编号

将桶里的数字顺序取出来,

输出结果:[62,14,16,88,59]

再次入桶,不过这次以十位数的数字为准,进入相应的桶,变成下边这样:

由于前边做了个位数的排序,所以当十位数相等时,个位数字是由小到大的顺序入桶的,就是说,入完桶还是有序

|  0  | 14,16 |  0  |  0  |  0  | 59 | 62  | 0  | 88  |  0  |

|  0  |  1      |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |桶编号

 

因为没有大过100的数字,没有百位数,所以到这排序完毕,顺序取出即可

最后输出结果:[14,16,59,62,88]

/// <summary>/// 基数排序/// 约定:待排数字中没有0,如果某桶内数字为0则表示该桶未被使用,输出时跳过即可
/// </summary>/// <param name="unsorted">待排数组</param>/// <param name="array_x">桶数组第一维长度</param>/// <param name="array_y">桶数组第二维长度</param>static void radix_sort(int[] unsorted, int array_x = 10, int array_y = 100){for (int i = 0; i < array_x/* 最大数字不超过999999999...(array_x个9) */; i++){int[,] bucket = new int[array_x, array_y];foreach (var item in unsorted){int temp = (item / (int)Math.Pow(10, i)) % 10;for (int l = 0; l < array_y; l++){if (bucket[temp, l] == 0){bucket[temp, l] = item;break;}}}for (int o = 0, x = 0; x < array_x; x++){for (int y = 0; y < array_y; y++){if (bucket[x, y] == 0) continue;unsorted[o++] = bucket[x, y];}}}}static void Main(string[] args){int[] x = { 999999999, 65, 24, 47, 13, 50, 92, 88, 66, 33, 22445, 10001, 624159, 624158, 624155501 };radix_sort(x);foreach (var item in x){if (item > 0)Console.WriteLine(item + ",");}Console.ReadLine();}

  

转载于:https://www.cnblogs.com/jxhd1/p/6527984.html

插入排序Insertion sort 2相关推荐

  1. python实现排序算法_python实现·十大排序算法之插入排序(Insertion Sort)

    简介 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法实现步骤 从第一个元素开 ...

  2. C语言插入排序Insertion Sort算法(附完整源码)

    插入排序Insertion Sort算法 插入排序Insertion Sort算法的完整源码(定义,实现,main函数测试) 插入排序Insertion Sort算法的完整源码(定义,实现,main函 ...

  3. C语言以递归实现插入排序Insertion Sort算法(附完整源码)

    以递归实现插入排序Insertion Sort算法 以递归实现插入排序Insertion Sort算法的完整源码(定义,实现,main函数测试) 以递归实现插入排序Insertion Sort算法的完 ...

  4. python sort 逆序_python实现·十大排序算法之插入排序(Insertion Sort)

    简介 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法实现步骤 从第一个元素开 ...

  5. [转载] python实现基本算法之插入排序(Insertion Sort)

    参考链接: Python中的插入排序insertion sort 基本算法之插入排序(Insertion Sort) 基本算法-02.插入排序(Insertion Sort)算法 冒泡排序已经发布,大 ...

  6. 插入排序(Insertion Sort)-Java实现

    插入排序(Insertion Sort)算法简介: 插入排序是一种丛序列左端开始依次对数据进行排序的算法.在排序过程中,左侧的数据陆续归位,而右侧留下的就是还未被排序的数据. 插入排序(Inserti ...

  7. 插入排序(Insertion Sort)

    维基百科:http://zh.wikipedia.org/wiki/插入排序 算法思想: 若数组A[n]的前n-1个数已经有序,我们只需把第n个元素插入到适当的位置即可.易分析得算法的时间复杂度为Ο( ...

  8. LeetCode 147. Insertion Sort List 链表插入排序 C++/Java

    LeetCode 147. Insertion Sort List 链表插入排序 C++/Java Sort a linked list using insertion sort. A graphic ...

  9. Java实现插入排序及其优化 insertion sort

    本文带来八大排序算法之插入排序. 插入排序(Insertion Sort)属于内部排序算法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的. 插入排序基本思想: 把n个待排序的元 ...

最新文章

  1. 【直播】鱼佬:心跳信号分类赛高分突破
  2. NLP开源 CMU Sphinx
  3. HDU5692(线段树+dfs序)
  4. Vuex2.0+Vue2.0构建备忘录应用实践
  5. CrudRepository/JpaRepository/PagingAndSortingRepository之间的区别
  6. facebook 面试_我在Facebook接受了应届毕业生的面试。 这是我从设计中学到的东西。...
  7. 光学字符识别OCR-6 光学识别
  8. 关于Maven本地仓库中存在依赖时,重新下载was cached in the local repository错误
  9. 工业大数据技术简介--来源、特点、关键问题以及案例
  10. 大型公建能耗监管系统
  11. google浏览器html不提示,谷歌浏览器不显示标签页怎么回事 谷歌浏览器不显示标签页的解决方法...
  12. DTU是什么,什么是工业4G DTU?
  13. 十以内加法速算游戏设计
  14. 网站打开速度的查询 测试
  15. MATLAB阶段性方程组,[转载]matlab 解方程组
  16. Apache JMeter安装
  17. Unity VRAR Unity播放全景视频及优化极点变形twist问题
  18. python编写的软件可以申请专利吗_Python爬虫 | 爬取同一公司用不同名字申请专利的那些Assignees...
  19. 用到Linux的命令的总结(持续更新)
  20. pthread_create未定义的引用

热门文章

  1. 查找数组中第K个最小值
  2. 声明和定义结构体需要注意的问题
  3. 51单片机常用知识点总结
  4. hdu 1788 Chinese remainder theorem again 【crt的具体过程】
  5. opencv imencode跟imdecode函数jpg(python)
  6. python下载m3u8地址_python 下载m3u8视频的示例代码
  7. 记一次事务报错问题 Transaction synchronization is not active
  8. v-show与v-if的区别
  9. 【luogu P3377 左偏树(可并堆)】 模板
  10. Java.util.Date.getTime()出现负数的问题