排序算法-基数排序
2021/12/31 1:07:15
本文主要是介绍排序算法-基数排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
排序算法-基数排序
算法思想
完整代码实现:
package com.sort; import java.util.LinkedList; import java.util.Queue; public class BaseSort { public static void main(String[] args) { int[] nums = {3,89,4,53,6,825,900,0,1000,53}; basesort(nums,nums.length); System.out.println("最终输出结果:"); for(int num:nums){ System.out.print(num+" "); } } public static void basesort(int[] nums,int len){ int max = 0; //寻找待排序数组中的最大值,以确定位数d for(int num:nums) max = Math.max(max,num); int d = GetNum_d(max); //建立分配和收集队列,十进制数总共需要0~9,十个队列 Queue<Integer>[] queues = new Queue[10]; //初始化这10个队列 for(int i=0;i<10;++i){ queues[i] = new LinkedList<>(); } //根据位数d来确定 分配和收集 的趟数 for(int i=0;i<d;++i){ //分配 for(int num:nums){ int temp = num; num /= (int)Math.pow(10,i); queues[num%10].offer(temp); } //收集,降序排列所以从最低位开始收集 int k = 0; for(int j=0;j<10;++j){ while(!queues[j].isEmpty() && k<len){ nums[k++] = queues[j].poll(); } } System.out.printf("第 %d 趟收集之后的结果:\n",i); for(int num:nums){ System.out.print(num+" "); } System.out.println(); } } public static int GetNum_d(int num){ int d = 1; while(num/10!=0){ num /=10; d++; } return d; } }
输出结果:
这篇关于排序算法-基数排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-21订单系统资料入门教程:轻松管理你的订单
- 2024-09-21Java部署资料:新手入门教程
- 2024-09-21Java部署资料:新手入门教程
- 2024-09-21Java订单系统资料:新手入门教程与实战指南
- 2024-09-21Java管理系统资料入门教程
- 2024-09-21从零开始学习Java监控系统资料
- 2024-09-21Java就业项目资料:新手入门的必备教程
- 2024-09-21Java全端资料:初学者指南
- 2024-09-21Java全栈资料入门教程及资源汇总
- 2024-09-21Java日志系统资料入门教程