链式基数排序_对整数序列进行排序,低关键字优先的基数排序算法很有创新。
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);
}
}
结果:
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);
}
}
结果:
相关文章推荐
- 输入n个整数,编写函数实现以下操作,要求用指针实现: (1) 对n个数进行排序; (2) 将从指定位置的m个数逆序存放,例如:原序列为2,4,6,8,10,12,14,16,18,20,若要求把
- n个无序整数,已知第i个数在排好序的序列中的位置为j,满足|i-j|<=K,请设计一种排序算法,对该序列进行排序。注:算法时间复杂度为O(nlgn)的得0分,复杂度为O(nk) 的得两分,总分是20分
- 编程珠玑 ~~ 排序与随机整数序列
- 输入任意几个整数,将其进行排序问题。
- LSD:低关键字优先;链式基数排序;lst.remove();取出和删除表头元素
- 用冒泡法将10个整数进行由大到小排序(数组)
- 随机产生N个整数,并对其进行排序,查找……
- 【php数组函数序列】之asort() - 对数组的元素值进行升序排序,保持索引关系
- 使用BitSet对1000万个Int整数进行排序
- 定义一个List集合并实例化对应的实现类对象。循环输入任意个整数,输入0结束输入循环,对集合中的数据进行从大到小的排序后输出
- 【php数组函数序列】之ksort()- 对数组的元素键名进行升序排序,保持索引关系
- 输入10个整数,用直接插入法对其进行排序;
- 基数排序算法思想为整数链表编写一个排序
- 初学C语言:使用指针变量的方式进行三个整数的排序
- 堆排序示例:对n个整数进行排序.
- 用3位以内的随机整数填充长度为20的整型数组,然后使用冒泡排序法按升序进行排序,输出排序后的数组元素(每行输出10个元素)。
- 对给定的分数进行排序输出排名序列
- 将1~n个整数按字典顺序进行排序,返回排序后第m个元素
- 【php数组函数序列】之krsort()- 对数组的元素键名进行降序排序,保持索引关系
- 【php数组函数序列】之ksort()- 对数组的元素键名进行升序排序,保持索引关系