我收到以下错误:
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]);
}
}
}
我做错了什么?
答案 0 :(得分:17)
在“之前”打印出来的行之后,你有:
quicksort (tab);
您设计的功能需要三个参数。您可以添加额外的参数:
quicksort (tab, 0, tab.length - 1)
或添加新功能,例如:
public quicksort(int[]) {
quicksort(tab, 0, tab.length - 1);
}
答案 1 :(得分:11)
你定义的函数“quicksort”要求3个参数,但你只提供一个参数。
答案 2 :(得分:6)
因为你的快速排序功能有3个参数,但你的通话只有一个参数。
编辑:第二:(
答案 3 :(得分:2)
你的代码应该调用
quicksort (tab,0,10);
在你的外部监听中,你可以对列表进行排序。
答案 4 :(得分:1)
如果您还没有采用IDE,我强烈建议您使用IDE。尤其是Java Eclipse。
Eclipse会强调有问题的代码行并向您提出一些建议(除了提供代码完成)。像JEdit这样的文本编辑器没有。
注意:我被告知IntelliJ很好,但你无法击败Eclipse的价格(免费)。
答案 5 :(得分:0)
BTW:你可以使用Arrays.sort()这是一个内置函数。在现实生活中你不会写这样的函数。 (仅作为家庭作业)