区块链技术博客
www.b2bchain.cn

数据结构与算法-排序(九)基数排序(Radix Sort)求职学习资料

本文介绍了数据结构与算法-排序(九)基数排序(Radix Sort)求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

摘要

基数排序是进行整数序列的排序,它是将整数从个位开始,直到最大数的最后一位截止,每一个进位(比如个位、十位、百位)的数进行排序比较。

每个进位做的排序比较是用计数排序的方式处理,所以基数排序离不开计数排序。

逻辑

对整数依次从个位数、十位数…进行排序。基数排序非常适合用于整数排序

对每一轮的排序可以使用计数排序的方法处理

基数排序和计数排序来做个简单的比较时,可以看到基数排序每一个进位都要进行一次计数排序,所以比较循环多一些。但是每个进制上的数范围是 0 到 9 这 10 个数,所以需要开辟的空间相对可控和少一些。下面来详细了解一下

流程

  1. 获取序列中的最大值,确定排序的最大位数
  2. 从个位起,使用计数排序的方式处理序列

实现

找出最大值, max 的初始值为序列的 first 元素。循环从 1 开始。

    int max = array[0];     for (int i = 1; i < array.length; i++) {         if (array[i] > max) {             max = array[i];         }     }

对序列从个位开始排序(计数排序的方式)。这里要留意,divider 的每一次增加是 divider *= 10,相当于向前进一位。

这里的每一轮比较排序中,交换的是序列中的元素,而不是某个进位上的数字,这个要特别注意。

    for (int divider = 1; divider <= max; divider *= 10) {         CountingSort(divider);     }

下面的排序就是用计数排序来处理,对计数排序不太明白的可以看上一期介绍计数排序。

摘要

基数排序是进行整数序列的排序,它是将整数从个位开始,直到最大数的最后一位截止,每一个进位(比如个位、十位、百位)的数进行排序比较。

每个进位做的排序比较是用计数排序的方式处理,所以基数排序离不开计数排序。

逻辑

对整数依次从个位数、十位数…进行排序。基数排序非常适合用于整数排序

对每一轮的排序可以使用计数排序的方法处理

基数排序和计数排序来做个简单的比较时,可以看到基数排序每一个进位都要进行一次计数排序,所以比较循环多一些。但是每个进制上的数范围是 0 到 9 这 10 个数,所以需要开辟的空间相对可控和少一些。下面来详细了解一下

流程

  1. 获取序列中的最大值,确定排序的最大位数
  2. 从个位起,使用计数排序的方式处理序列

实现

找出最大值, max 的初始值为序列的 first 元素。循环从 1 开始。

    int max = array[0];     for (int i = 1; i < array.length; i++) {         if (array[i] > max) {             max = array[i];         }     }

对序列从个位开始排序(计数排序的方式)。这里要留意,divider 的每一次增加是 divider *= 10,相当于向前进一位。

这里的每一轮比较排序中,交换的是序列中的元素,而不是某个进位上的数字,这个要特别注意。

    for (int divider = 1; divider <= max; divider *= 10) {         CountingSort(divider);     }

下面的排序就是用计数排序来处理,对计数排序不太明白的可以看上一期介绍计数排序。

摘要

基数排序是进行整数序列的排序,它是将整数从个位开始,直到最大数的最后一位截止,每一个进位(比如个位、十位、百位)的数进行排序比较。

每个进位做的排序比较是用计数排序的方式处理,所以基数排序离不开计数排序。

逻辑

对整数依次从个位数、十位数…进行排序。基数排序非常适合用于整数排序

对每一轮的排序可以使用计数排序的方法处理

基数排序和计数排序来做个简单的比较时,可以看到基数排序每一个进位都要进行一次计数排序,所以比较循环多一些。但是每个进制上的数范围是 0 到 9 这 10 个数,所以需要开辟的空间相对可控和少一些。下面来详细了解一下

流程

  1. 获取序列中的最大值,确定排序的最大位数
  2. 从个位起,使用计数排序的方式处理序列

实现

找出最大值, max 的初始值为序列的 first 元素。循环从 1 开始。

    int max = array[0];     for (int i = 1; i < array.length; i++) {         if (array[i] > max) {             max = array[i];         }     }

对序列从个位开始排序(计数排序的方式)。这里要留意,divider 的每一次增加是 divider *= 10,相当于向前进一位。

这里的每一轮比较排序中,交换的是序列中的元素,而不是某个进位上的数字,这个要特别注意。

    for (int divider = 1; divider <= max; divider *= 10) {         CountingSort(divider);     }

下面的排序就是用计数排序来处理,对计数排序不太明白的可以看上一期介绍计数排序。

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 数据结构与算法-排序(九)基数排序(Radix Sort)求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们