你如何计算基数排序的数字
Posted
技术标签:
【中文标题】你如何计算基数排序的数字【英文标题】:how do you figure out the digit for radix sort 【发布时间】:2013-04-04 02:45:25 【问题描述】:大家好,我需要为任意数量的数字和值编写 RADIX 排序算法。我认为使用 LL 来操作比使用 Arrays 来存储 0-9 值更容易。我认为使用递归来解决这个问题会更好,但是我遇到了困难并且出错了
Exception in thread "main" java.lang.***Error
at java.util.LinkedList$Node.<init>(Unknown Source)
at java.util.LinkedList.linkLast(Unknown Source)
at java.util.LinkedList.add(Unknown Source)
我非常感谢任何指导! :)
import java.util.LinkedList;
import java.util.Scanner;
public class pt2
long[] mine;
int digits;
Scanner sn = new Scanner(System.in);
public pt2()
makeArray();
add();
RADIX(mine,1);
@SuppressWarnings( "unchecked", "rawtypes" )
void RADIX(int[] kiki, int digi)
while(digi<=digits)
LinkedList<Integer> l0 = new LinkedList<Integer>();
LinkedList<Integer> l1 = new LinkedList<Integer>();
LinkedList<Integer> l2 = new LinkedList<Integer>();
LinkedList<Integer> l3 = new LinkedList<Integer>();
LinkedList<Integer> l4 = new LinkedList<Integer>();
LinkedList<Integer> l5 = new LinkedList<Integer>();
LinkedList<Integer> l6 = new LinkedList<Integer>();
LinkedList<Integer> l7 = new LinkedList<Integer>();
LinkedList<Integer> l8 = new LinkedList<Integer>();
LinkedList<Integer> l9 = new LinkedList<Integer>();
LinkedList[] cap =l0,l1,l2,l3,l4,l5,l6,l7,l8,l9;
for( int j=0;j<kiki.length;j++)
int k=0;
while(k<10)
//need to put the number in the correct LL but how
int jk = digital(kiki[j],(int)(Math.pow(10,digi)));
if(jk==k)
cap[k].add(kiki[j]);
k=11;
k++;
int i = 0;
while(i<kiki.length)
int p=0;
while(p<10)
while(cap[p].isEmpty()==false)
kiki[i]=(int) cap[p].removeFirst();
p++;
i++;
digi++;
public int digital(int num, int pos)
int i = (int) (num % Math.pow(10,pos));
i= (int)(i/Math.pow(10, pos-1));
return i;
void add()
int i=0;
while(i<mine.length)
mine[i] = (long)(Math.random()*digits);
i++;
void makeArray()
System.out.println("Max size?");
mine = new long[sn.nextInt()];
System.out.println("Max digits?);
if(digits<0)
System.out.println("bad USer");
else
digits = sn.nextInt();
现在返回
最大尺寸? 10 最大位数? 2 未排序
74 63 87 52 1 99 10 74 67 49
已排序 49 63 87 52 1 99 10 74 67 49 结束
【问题讨论】:
【参考方案1】:将您的链接列表存储在另一个列表或数组中,而不是使用 10 个单独的变量。然后你可以让数字作为索引或偏移来选择正确的。
【讨论】:
我确实将它们存储在 LinkedList[] 上限中。以上是关于你如何计算基数排序的数字的主要内容,如果未能解决你的问题,请参考以下文章