使用二维递归数组的基数排序Java

使用二维递归数组的基数排序Java,java,arrays,sorting,recursion,radix,Java,Arrays,Sorting,Recursion,Radix,在过去的几天里,我一直在尝试在Java中实现基数排序,但我不能正确地实现它。我知道ArrayList有很多解决方案,但我需要用二维数组和递归来完成我的“家庭作业”。我的问题是,无论发生什么,我都无法将元素放入2d数组中。以下是我目前得到的信息: public class ElfSort{ public static int[] sort(int[] packages, int digit){ //new 2d array with 10 "buckets" int

在过去的几天里,我一直在尝试在Java中实现基数排序,但我不能正确地实现它。我知道ArrayList有很多解决方案,但我需要用二维数组和递归来完成我的“家庭作业”。我的问题是,无论发生什么,我都无法将元素放入2d数组中。以下是我目前得到的信息:

public class ElfSort{
    public static int[] sort(int[] packages, int digit){
      //new 2d array with 10 "buckets"
      int[][] d=new int[10][];
      //temporary array 
      int[] tmp;
      if(digit>=0){
         //going through array and try to put each element into a bucket using putIn()
         for(int i=0; i<packages.length; i++){
             putIn(d[packages[i]/pot(digit)%10],packages[i]);
         }
         digit--;
         for(int i=0; i<10; i++) sort(d[i],digit);
      }
      for(int i=0; i<10; i++){
          tmp=d[i];
          for(int j=0; j<tmp.length; j++) packages[j]=tmp[j];
      }
      return packages;
    }
    private static int pot(exp){
      if(exp==0) return 1;
      return 10*pot(exp-1);
    }
    private static int[] putIn(int[] place, int nr){
      int[] nplace=new int[place.length+1];
      for(int i=0; i<place.length; i++) nplace[i]=place[i];
      nplace[nplace.length-1]=nr;
      return nplace;
    }    
}
公共类ElfSort{
公共静态int[]排序(int[]包,int位){
//具有10个“桶”的新二维阵列
int[][]d=新的int[10][];
//临时阵列
int[]tmp;
如果(数字>=0){
//遍历数组并尝试使用putIn()将每个元素放入一个桶中

对于(int i=0;i所以对于每个搜索这个答案的人,我最终得到了正确的答案:

public class Elfsort{
   public static int[] sort(int[] packages, int digit){
      if(packages.length<2) return packages;
      if(digit>=0){
         int[][] d=new int[10][];
         int tmp=-1;
         for(int i:packages){
             tmp=i/pot(digit);
             d[tmp%10]=putIn(d[tmp%10],i);
         }
         digit--;
         int a=0;
         for(int i=0; i<10; i++){
             sort(d[i],digit);
             for(int j:d[i]){
                 packages[a++]=j;
             }
         }
      }
      return packages;
  }
}
公共类Elfsort{
公共静态int[]排序(int[]包,int位){
if(packages.length=0){
int[][]d=新的int[10][];
int tmp=-1;
用于(int i:软件包){
tmp=输入/输出(数字);
d[tmp%10]=普京(d[tmp%10],i);
}
数字--;
int a=0;

对于(inti=0;iSo
putIn
的目的/代码是什么?)我个人会将bucket的实现转移到一个单独的类中,如果你绝对坚持使用2d数组。另外,如果这是为了家庭作业,你能更清楚地说明你想要什么样的答案吗?我认为完整的Java文件作为答案是不可能的(合法的)对你有用,因为这将是plaigarism,对吗?您好,谢谢您的评论!putIn()应该将我的输入数组“packages”中的一个数字从d放入一个合适的数组中。这样12345和12355都将落在d[1]的数组中.最后应该有一个有效的排序过程,用5位数字从低到高对数字进行排序。15应该解释为00015,依此类推。只要我知道程序中发生了什么,完整的java文件就可以了。let