Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按o(n)或o(1)的时间复杂度排序整数数组_Java_Arrays_Sorting - Fatal编程技术网

Java 按o(n)或o(1)的时间复杂度排序整数数组

Java 按o(n)或o(1)的时间复杂度排序整数数组,java,arrays,sorting,Java,Arrays,Sorting,在时间复杂度为o(n)或更小的情况下,对整数数组从1到4(非常简单)进行排序的最佳算法是什么 public void radixsort(int[]输入){ 最终整数基数=10; //声明并初始化bucket[] List[]bucket=newarraylist[RADIX]; 对于(int i=0;i0){ maxLength=false; } } //输入数组中的空列表 int a=0; for(int b=0;b

在时间复杂度为o(n)或更小的情况下,对整数数组从1到4(非常简单)进行排序的最佳算法是什么

public void radixsort(int[]输入){
最终整数基数=10;
//声明并初始化bucket[]
List[]bucket=newarraylist[RADIX];
对于(int i=0;i0){
maxLength=false;
}
}
//输入数组中的空列表
int a=0;
for(int b=0;b
code

使用,即O(n)

public void radixsort(int[]输入){
最终整数基数=10;
//声明并初始化bucket[]
List[]bucket=newarraylist[RADIX];
对于(int i=0;i0){
maxLength=false;
}
}
//输入数组中的空列表
int a=0;
for(int b=0;b

code

时间复杂度不是这样度量的。看起来像是的变体。值是否限制为1到4以及数组的大小?如果是,请使用。如果是由4个值组成的数组,请使用6个If/swap语句,因为时间复杂度不是以这种方式度量的..看起来像是的变体。值是否限制为1到4,数组是否有任何大小?如果是,请使用。如果它是4个值的数组,则使用6个If/swap语句,就像在基数中一样,而不是在基数为10的情况下,使用基数256(一个字节)会更快,它只需要对32位整数进行4次传递。与基数为10的情况相比,使用基数256(一个字节)会更快,它只需要对32位整数进行4次传递。
 public void radixsort(int[] input) {
  final int RADIX = 10;
  // declare and initialize bucket[]
  List<Integer>[] bucket = new ArrayList[RADIX];
  for (int i = 0; i < bucket.length; i++) {
    bucket[i] = new ArrayList<Integer>();
  }

  // sort
  boolean maxLength = false;
  int tmp = -1, placement = 1;
  while (!maxLength) {
    maxLength = true;
    // split input between lists
    for (Integer i : input) {
      tmp = i / placement;
      bucket[tmp % RADIX].add(i);
      if (maxLength && tmp > 0) {
        maxLength = false;
      }
    }
    // empty lists into input array
    int a = 0;
    for (int b = 0; b < RADIX; b++) {
      for (Integer i : bucket[b]) {
        input[a++] = i;
      }
      bucket[b].clear();
    }
    // move to next digit
    placement *= RADIX;
  }
}