基数排序的java实现
2015-09-07 09:48
387 查看
package com.edu.hpu.sort.radix; import java.util.LinkedList; import java.util.List; import com.edu.hpu.sort.Sort; public class RadixSort extends Sort { private int radix; private int d; public RadixSort(int radix, int d) { this.radix = radix; this.d = d; } @Override public int[] doSort(int[] arr) { List<Integer>[] bucket = init(radix); int [] tmp = new int [arr.length]; // 控制数字的位 for(int i = 0; i < d; i++){ // 取得位数每个数的某一位 for(int v : arr){ int d = (int) (v / Math.pow(10, i) % 10); bucket[d].add(v); } // 各个位进行桶排序的结果放入tmp中 for(int w = 0, j = 0; j < bucket.length && w < tmp.length; j++){ for(int v : bucket[j]){ tmp[w] = v; w++; } } // 处理数组 arr = tmp; for(List<Integer> l : bucket){ l.clear(); } } return arr; } // 初始化桶 private List<Integer> [] init(int range){ @SuppressWarnings("unchecked") List<Integer> [] aux = new LinkedList[range]; for(int i = 0; i < aux.length; i++){ aux[i] = new LinkedList<Integer>(); } return aux; } public static void main(String[] args) { Sort sort = new RadixSort(10, 3); sort.printOrder(new int []{4, 1, 3, 2, 16, 101, 43,200,999,9, 100, 194, 8, 7}); } }
相关文章推荐
- eclipse的thrift插件
- java上传文件到FTP服务器
- Java获取某个月的天数
- 归并排序的递归与非递归实现java
- java IO流分析,java文件读写
- Thinking in java 之:内部类
- Java IO流学习总结
- Spring MVC+Mybatis入门学习小项目实例
- 用Eclipse运行selenium脚本时弹出浏览器导入向导设置的解决方法
- [leetcode-149]Max Points on a Line(java)
- ibooking项目设计介绍(一个基于SSH的外卖点餐系统)
- Spring的方法注入
- JPA一对多,多对一双向关联
- Java设计模式 - 装饰器模式
- eclipse 快捷键
- 如何在Spring MVC中自定义注解
- Java设计模式 -- 适配器模式
- java静态方法是否能重写问题
- eclipse启动:failed to create jvm
- 深入Java单例模式