Почему я получаю эту ошибку компиляции в Java?
Я получаю следующую ошибку:
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]);
}
}
}
Что я делаю неправильно?
6 ответов
Сразу после строки, чтобы распечатать "до", у вас есть:
quicksort (tab);
Разработанная вами функция требует трех аргументов. Вы можете добавить дополнительные аргументы:
quicksort (tab, 0, tab.length - 1)
Или добавьте новую функцию, такую как:
public quicksort(int[]) {
quicksort(tab, 0, tab.length - 1);
}
Определяемая вами функция "быстрая сортировка" запрашивает 3 параметра, но вы предоставляете только один.
Потому что ваша функция быстрой сортировки имеет 3 параметра, а ваш вызов дает только один.
Редактировать: второй:(
Ваш код должен позвонить
quicksort (tab,0,10);
В вашем внешнем вызове, так что вы можете отсортировать список.
Не зная, для чего вы пишете код, я настоятельно рекомендую использовать IDE, если вы еще не приняли его. Особенно Eclipse для Java.
Eclipse подчеркнет оскорбительную строку кода и сделает несколько предложений (в дополнение к предложению завершения кода). Текстовый редактор, как JEdit не делает.
Примечание: мне сказали, что IntelliJ хорош, но вы не можете превзойти цену Eclipse (бесплатно).
Кстати: вы можете просто использовать Arrays.sort(), который является встроенной функцией. Вы бы не написали такую функцию в реальной жизни. (только в качестве домашней работы)