八大排序算法之七:基数排序

算法思想
思想:

通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用。
=>将所有的待比较数值统一为同样的数位长度,数位较短的数前面补0。然后,从最低位开始,依次进行排序(每一位进行一次,一共有多少位,就进行多少次排序)。

基数排序的实现思路:
  1. 用于排序过程的“桶”

    • 假设用于排序的数均为正整数,那么在这里设置桶的个数为10。又因为每个桶,实际上也是一个一维数组。
      所以,定义一个二维数组,来实现排序过程中对于“桶”的要求:
      int[][] bucket = new int[10][arr.length];
    • 在每趟排序过程中,每个桶中存储的有效元素的个数,也是需要记录的。
      可以定义一个一位数组,来记录每个桶中所存储的有效元素的个数:
      int[] bucketElementCounts = new int[bucket.length];
  2. 确定对arr[]中的元素实现排序,一共需要进行排序的趟数:

    • 在基数排序中,需要进行的排序的趟数 == arr[]中最大的数 的位数
  3. 排序过程的实现:

    • 每趟排序过程主要分为两步:
      1)将元素依据 该趟排序所参照的数位 上的值,放入到对应的桶中
      2)按照放入桶中的顺序,从桶中依次取出对应元素的值,放回到arr[]中
算法实现
//实现基数排序
	public static void radixSort(int[] arr) {
   
		//定义一个二维数组,来实现排序过程中对于“桶”的要求
		int[][] bucket = new int[10][arr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值