2

我收到以下错误:

quicksort(int[],int,int)cannot be applied to(int[])

当我编译这个:

import java.util.*;

public class Sort {

public static void main(String[] args){

Random rand = new Random();
int[] tab = new int[10];

for(int i = 0; i < tab.length; i++) {
tab[i] = rand.nextInt(100);

System.out.println("Before: ");
show(tab);

quicksort (tab);
System.out.println("After: ");
show(tab);
  }
}
static void quicksort(int tab[], int x, int y) {

        int i,j,v,temp;

        i=x;
        j=y;
        v=tab[(x+y) / 2];
        do {
            while (tab[i]<v) 
                i++;
            while (v<tab[j]) 
                j--;
            if (i<=j) {
                temp=tab[i];
                tab[i]=tab[j];
                tab[j]=temp;
                i++;
                j--;
            }
        }
        while (i<=j);
        if (x<j) 
            quicksort(tab,x,j);
        if (i<y) 
            quicksort(tab,i,y);
    }


static void show (int tab[]) {
for (int i = 0; i <tab.length; i++) {
System.out.println(tab[i]);

  }
 }
}

我究竟做错了什么?

4

6 回答 6

17

在打印出“之前”的行之后,您有:

quicksort (tab);

您设计的函数需要三个参数。您可以添加额外的参数:

quicksort (tab, 0, tab.length - 1)

或者添加一个新功能,例如:

public quicksort(int[]) {
  quicksort(tab, 0, tab.length - 1);
}
于 2009-05-09T13:44:44.967 回答
11

您定义的函数“快速排序”要求 3 个参数,但您只提供一个。

于 2009-05-09T13:42:51.800 回答
6

因为您的快速排序函数有 3 个参数,但您的调用只给出了一个。

编辑:第二个:(

于 2009-05-09T13:43:56.090 回答
2

你的代码应该调用

quicksort (tab,0,10);

在您的外部调用中,您可以对列表进行排序。

于 2009-05-09T13:44:05.327 回答
1

在不知道您在用什么编写代码的情况下,如果您还没有采用 IDE,我强烈建议您使用 IDE。特别是用于 Java 的Eclipse 。

Eclipse 会强调有问题的代码行并向您提出一些建议(除了提供代码完成之外)。文本编辑器,如 JEdit 没有。

注意:有人告诉我 IntelliJ 很好,但你无法击败 Eclipse 的价格(免费)。

于 2009-05-09T15:21:28.417 回答
0

顺便说一句:您可以只使用内置函数 Arrays.sort() 。在现实生活中你不会写这样的函数。(仅作为作业)

于 2009-05-09T14:16:05.580 回答