基数排序-java实现

2024-04-10 00:18
文章标签 java 实现 基数排序

本文主要是介绍基数排序-java实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  
  1. /**
  2. * 基数排序
  3. *
  4. * @author timmy1
  5. *
  6. */
  7. public class RadixSort {
  8. /**
  9. * 实现思路:根据传入的位数进行循环: 第一遍:先循环数组中元素个位数上的数字,先根据个位数进行排序,使用二维数组进行数据存放
  10. * 第二遍:进行元素十位数上的数字排序
  11. *
  12. * @param array
  13. * 数组
  14. * @param radix
  15. * 基数,存放 0-9共十个数字
  16. * @param bit
  17. * 位数;表示个位,十位,百位
  18. */
  19. private void radixSort(int[] array, int radix, int bit) {
  20. int divid = 1;// 进行求个位十位数字上的元素大小,每次bit循环都自乘10
  21. int length = array.length;
  22. List<ArrayList<Integer>> datas = new ArrayList<ArrayList<Integer>>();
  23. for(int h=0;h<10;h++){
  24. List<Integer> lists = new ArrayList<Integer>();
  25. datas.add((ArrayList<Integer>) lists);
  26. }
  27. for (int i = 1; i <= bit; i++) {
  28. // 每次循环都将上List数据清空
  29. int size = datas.size();
  30. for(int j = 0;j<size;j++){
  31. datas.get(j).clear();
  32. }
  33. for (int j = 0; j < length; j++) {// 求个数上的数字
  34. int data = array[j];// 拿到
  35. int key = (data / divid) % radix;
  36. datas.get(key).add(data);
  37. }
  38. // 将digit数组中的元素取出来,放到array数组中去
  39. int index = 0;
  40. for (int j = 0; j < 10; j++) {
  41. List<Integer> digits = datas.get(j);
  42. int m = digits.size();
  43. for(int n = 0;n<m;n++){
  44. array[index++] = digits.get(n);
  45. }
  46. }
  47. PrintUtil.print("第"+i+"趟排序");
  48. PrintUtil.printArray(array, PrintUtil.HORIZONTAL);
  49. divid *= 10;
  50. }
  51. }
  52. public static void main(String[] args) {
  53. int[] array = { 188, 61, 98, 566, 48, 75, 12, 0, 234, 32, 65, 10 };
  54. PrintUtil.print("基数排序");
  55. PrintUtil.printArray(array, PrintUtil.HORIZONTAL);
  56. RadixSort radixSort = new RadixSort();
  57. radixSort.radixSort(array, 10, 3);
  58. }
  59. }

结果打印:

基数排序

188, 61, 98, 566, 48, 75, 12, 0, 234, 32, 65, 10, 

第1趟排序

0, 10, 61, 12, 32, 234, 75, 65, 566, 188, 98, 48, 

第2趟排序

0, 10, 12, 32, 234, 48, 61, 65, 566, 75, 188, 98, 

第3趟排序

0, 10, 12, 32, 48, 61, 65, 75, 98, 188, 234, 566, 




这篇关于基数排序-java实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/889607

相关文章

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Spring Cloud Hystrix原理与注意事项小结

《SpringCloudHystrix原理与注意事项小结》本文介绍了Hystrix的基本概念、工作原理以及其在实际开发中的应用方式,通过对Hystrix的深入学习,开发者可以在分布式系统中实现精细... 目录一、Spring Cloud Hystrix概述和设计目标(一)Spring Cloud Hystr

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

C++实现回文串判断的两种高效方法

《C++实现回文串判断的两种高效方法》文章介绍了两种判断回文串的方法:解法一通过创建新字符串来处理,解法二在原字符串上直接筛选判断,两种方法都使用了双指针法,文中通过代码示例讲解的非常详细,需要的朋友... 目录一、问题描述示例二、解法一:将字母数字连接到新的 string思路代码实现代码解释复杂度分析三、

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

Spring Boot整合消息队列RabbitMQ的实现示例

《SpringBoot整合消息队列RabbitMQ的实现示例》本文主要介绍了SpringBoot整合消息队列RabbitMQ的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录RabbitMQ 简介与安装1. RabbitMQ 简介2. RabbitMQ 安装Spring

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

springMVC返回Http响应的实现

《springMVC返回Http响应的实现》本文主要介绍了在SpringBoot中使用@Controller、@ResponseBody和@RestController注解进行HTTP响应返回的方法,... 目录一、返回页面二、@Controller和@ResponseBody与RestController

JAVA集成本地部署的DeepSeek的图文教程

《JAVA集成本地部署的DeepSeek的图文教程》本文主要介绍了JAVA集成本地部署的DeepSeek的图文教程,包含配置环境变量及下载DeepSeek-R1模型并启动,具有一定的参考价值,感兴趣的... 目录一、下载部署DeepSeek1.下载ollama2.下载DeepSeek-R1模型并启动 二、J