您的位置:首页 > 其它

链式基数排序_对整数序列进行排序,低关键字优先的基数排序算法很有创新。

2014-04-15 22:27 260 查看
package cn.itcast.sort;

import java.util.ArrayList;

import java.util.List;

/**

*

* 请对整数序列进行排序。

随机产生1000个整数,其中整数的范围0~9999

可以用十进制的每个位为关键字。排序时使用十个动态数组为临时空间,进行分配和收集。

采用低关键字优先的基数排序完成对整数序列的排序任务。

注意体会仅仅依靠分配、收集的手段即可完成排序。

*

*/

public class ListBaseSort {

public static void main(String[] args) {

// TODO Auto-generated method stub

List data = new ArrayList();

//填充随机值,这里的随机数范围是0~9999;

for(int i=0; i<1000; i++)

data.add((int)(Math.random() * 10000));

//准备十个桶

List[] base = new ArrayList[10];

for(int i=0; i<base.length; i++) base[i] = new ArrayList();

//从低到高,分配与收集,k是为数,1,10,100,1000

//这里先是按照个,十,百,千的顺序分成四组,每组再分配10个0~9动态数组空间分别按高位排序,

//最后递归排序次位数据。

for(int k=1; k<=1000; k*=10){

for(int i=0; i<data.size(); i++)

//按关键字分配到桶里

base[(Integer)data.get(i)/k%10].add(data.get(i));

data.clear();

for(int i=0; i<base.length; i++)

data.addAll(base[i]); //收集

for(int i=0; i<base.length; i++)

base[i].clear(); //清桶

}

System.out.println(data);

}

}

结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐