基数排序(桶排序)-----------这里只适用于正数,负数的使用范围后续再更新
准备一个大小为10(索引为0~9)的桶,取待排序数组中的每一位(从低位到高位)依次放到对应的桶中。
流程:
- 找到数组arr中的最大值,并求出最大值的位数,表示外层循环的次数
- 遍历数组,统计数组arr[i]对应的数字,并放到对应的桶中,同时统计当前桶存放的数字个数
- 将桶中的数据依次全部取出,放入原来的数组
- 重复进行第2、3、4步
package com.atguigu.sort;
import java.util.Arrays;
public class RadixSort {
public static void main(String[] args) {
int[] arr= {76,1,67,16,8,30};
radixSort(arr);
System.out.println("基数排序后的数组:"+Arrays.toString(arr));
}
//基数排序方法
public static void radixSort(int[] arr) {
//循环次数
int num=dig(arr);
int base=1;
//记录每次循环比较的位置(个位,十位,百位...)
int len=arr.length;
while(num!=0) {
//2.遍历数组,统计数组arr[i]对应的数字,并放到对应的桶中,同时统计当前桶存放的数字个数
int[][] tong=new int[10][len];
//前一个标记哪个桶,后一个标记当前桶中放的个数
int[] count=new int[10];
//统计当前桶放了几个数
for(int i=0;
i0) {//说明j桶内有数字存储
for(int k=0;
karr[i]?max:arr[i];
}
//求出最大值的位数
int cnt=0;
if(max==0) {
return 1;
}
while(max!=0) {
max/=10;
cnt++;
}
return cnt;
}
}
推荐阅读
- 第326天
- 一个选择排序算法
- 排序(归并排序)
- 【图解】9张图彻底搞懂堆排序
- vue|vue 上移 下移 删除 排序
- 桶井猴子与沙溪羊子的故事【留影篇】
- 必须掌握的八种基本排序算法
- 【排序】插入排序算法
- 排序之冒泡和选择
- 2019-03-02|2019-03-02 排序