数据结构与算法-排序算法(空间换时间算法)
2021/9/23 17:11:02
本文主要是介绍数据结构与算法-排序算法(空间换时间算法),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据结构与算法-排序算法(空间换时间算法)
1、计数排序
package suanfa; import java.util.Arrays; public class MySort { public void countingSort(int[] data){ int max=data[0]; int min=data[0]; for(int value:data){ if(value<min){ min=value; } if(value>max){ max=value; } } int[] temp=new int[max-min+1]; for(int value:data){ temp[value-min]++; } int index=0; for(int i=0;i<temp.length;i++){ while(temp[i]>0){ data[index++]=i+min; temp[i]--; } } } public static void main(String[] args){ int[] data=new int[]{9,8,7,65,4,3,32,223,1}; MySort mySort=new MySort(); mySort.countingSort(data); for(int value:data){ System.out.println(value); } } }
2、基数排序
package suanfa; import java.util.Arrays; public class MySort { public void radixSort(int[] data){ int[][] bucket=new int[10][data.length]; int max=data[0]; for(int value:data){ if(value>max){ max=value; } } int len=(max+"").length(); for(int i=0;i<len;i++){ int[] index=new int[10]; for(int value:data){ int x=(int)(value/Math.pow(10,i))%10; bucket[x][index[x]++]=value; } int s=0; for(int k=0;k<10;k++){ for(int j=0;j<index[k];j++){ data[s++]=bucket[k][j]; } } } } public static void main(String[] args){ int[] data=new int[]{9,8,7,65,4,3,32,223,1}; MySort mySort=new MySort(); mySort.radixSort(data); for(int value:data){ System.out.println(value); } } }
这个基数排序也可以用于字符串的字典序排序(逐位比较)先比较最低位,最低位数相同的放进桶中,然后再比较十位、百位。。。。。。。
这篇关于数据结构与算法-排序算法(空间换时间算法)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-30我的第一个Go命令行工具
- 2024-09-30初学者指南:轻松掌握模块化编程
- 2024-09-30顶级5款免费的IntelliJ插件,助你Java开发之路更顺畅
- 2024-09-30提高应用程序可用性:冗余和持久性
- 2024-09-30Twitter 系统设计面试示例
- 2024-09-30JSON对象入门教程:轻松掌握基础用法
- 2024-09-30封装入门:Java面向对象编程的第一步
- 2024-09-30后台交互入门:轻松掌握基础知识与实践技巧
- 2024-09-30轻松入门:后台交互教程详解
- 2024-09-30后台交互项目实战:新手指南