java-------------基数排序-------------
2011-11-24 18:53
225 查看
基本思想:百度百科-http://baike.baidu.com/view/1170573.htm
1.主程序
package advanced_sort; import java.util.Vector; public class RadixSort { // -----------基数排序--------- public void radixSort(int date[]) { for (int i = 0; i < 3; i++) { bucketPush(date, i); } }//end radixSort // 返回value指定位上的数,当d为0时返回value的各位,为1时返回value的十位... public int digit(int value, int d) { if (d == 0) return value % 10; else { return digit(value / 10, d - 1); } }// end digit // bucketPush基于数字d,把一组数放置到10个桶中-d由数组中的最大数的位数决定 // 如数组中最大数为三位数100,则d为3 public void bucketPush(int date[], int d) { Vector<Integer>[] bucket = new Vector[10]; // 建立一个向量数组,包含十个桶。 for (int i = 0; i < 10; i++) { bucket[i] = new Vector<Integer>();// 构造一个空向量,使其内部数据数组的大小为 // 10,其标准容量增量为零 } int n = date.length;// 数组的元素个数,对每个数进行分析,根据d放入不同的桶中 int j;// 每个数对应位数上的数,根据j判断放入哪个桶中 for (int i = 0; i < n; i++) { j = digit(date[i], d); bucket[j].add(new Integer(date[i]));// 将元素放入对应的桶中 } // 将各个桶中的元素取出,放入数组中 int i = -1; int value; for (int k = 0; k < 10; k++) { while (!bucket[k].isEmpty()) { i++; value = bucket[k].remove(0); date[i] = value; } }// end for }// end bucketPush }
2.测试程序
package advanced_sort; public class App { private static int date[] = new int[20]; /** * @param args */ public static void main(String[] args) { // ---------------------------- for (int i = 0; i < date.length; i++) { date[i] = (int) (Math.random() * 100); } System.out.println("待排序函数:"); display(); RadixSort radix = new RadixSort(); radix.radixSort(date); System.out.println("排序后的函数"); display(); } // --------------------打印函数---------- public static void display() { for (int i = 0; i < date.length; i++) { System.out.print(date[i]+" "); } System.err.println(); } }
3.实验结果
待排序函数: 55 35 14 65 53 75 65 94 80 71 93 27 29 87 19 20 61 99 56 35 排序后的函数 14 19 20 27 29 35 35 53 55 56 61 65 65 71 75 80 87 93 94 99
相关文章推荐
- 基于计数排序的基数排序 java版
- 计数排序 (线性时间排序之基数排序,计数排序及java实现)
- 基数排序原理及JAVA实现(待续)
- 基数排序——java
- 桶式排序与基数排序举例及JAVA代码实现(附:基数排序的方法给英文字符串排序)
- 基本排序_基数排序_Java实现
- Java排序算法总结(八):基数排序
- 基数排序 原始java实现 时间复杂度O(n)
- Java排序算法以及算法改进总结(计数排序、基数排序、桶排序)
- Java实现排序(快速排序、冒泡排序、选择排序、基数排序、插入排序)
- 插入排序、冒泡排序、选择排序、希尔排序、快速排序、归并排序、堆排序和LST基数排序——JAVA实现
- Java排序算法(十一):基数排序
- 基数排序 java代码实现
- java算法之基数排序
- Java实现-高效排序算法之基数排序
- 算法题——Maximum Gap(JAVA)基数排序
- 易解排序算法 - 空间换取时间(java写:基数排序,计数排序,桶排序,排序全部源代码)
- java必须知道的八大种排序算法:冒泡排序、 选择排序、插入排序、快速排序、希尔算法、归并排序算法、基数排序、堆排序算法
- 基数排序 Java
- 基数排序之java实现