Почему я получаю эту ошибку компиляции в 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(), который является встроенной функцией. Вы бы не написали такую ​​функцию в реальной жизни. (только в качестве домашней работы)

Другие вопросы по тегам