2013-12-08 2 views
-2

Эта программа дает мне сообщение об ошибке. Я не знаю, что вызывает эту ошибку, вы мне поможете?Быстрая ошибка сортировки с использованием C++

error C2109: "subscript requires array or pointer type " 

Вот код

void quicksort(int input,int left,int right) 
{ 
int i=left,j=right; // initailizing left and right limit 

int pivot = input[(i+j)/2]; 

while (i<=j) 
{ 
    while (input[i]<pivot) 
    { i++; } 


    while (input[j]>pivot) // if right side limit is greater than pivot, >p will move to left 
    { j--; } 

    if (i<=j) // when left limit less than right limit swap value 
    { 
     swap(input[i],input[j]); 

     i++; 
     j--; 
    } // end if 
} // end of while 

if (left<j) 
    quicksort(input,left,j); 

if (i<right) 
    quicksort(input,i,right); 
    } 




int main() { 
    int input[10]={3,7,2,1,99,10,15,74,11,31}; 

} 
quicksort(input,left,right); //calling function in main 

cout<<"the sorted numbers are:\n"; // showing sorted array 

for(int a=o;a<10;a++) 
{ 
    cout<<setw (4)<<input[a]<<endl; 
} 
system ("pause"); 

}

+2

Почему вы не сказали нам, какая строка имеет ошибку? Мы не психические. –

+0

ty alot sir g ty – user3079249

ответ

0

Вы используете input как массив, а это в int. Вы, наверное, забыли поставить []:

void quicksort(int input[],int left,int right) 
         ^^ 

Кроме того, у вас есть некоторые опечатки, такие как o вместо 0, резервируемой } и ...

Here is a live working code

+0

THANKS ALOT SIR главная ошибка моей :) «может ли Бог благословить u – user3079249

+0

только еще один вопрос plzzzz», как я могу узнать, нет ли сравнений и свопов, сделанных в моем массиве quicksort? Plz help plz – user3079249

+0

Простейший способ put flags. Другой способ - проверить, был ли массив отсортирован раньше или нет. – deepmax

2

input объявлен как целое но вы пытаетесь получить доступ к input[(i+j)/2]

1

Ввод должен быть указателем на головку входного массива, вашей функцией заголовок должен либо объявить его указателем, либо массивом.

void quicksort(int* input,int left,int right) 
+0

СПАСИБО ALOT SIR – user3079249

 Смежные вопросы

  • Нет связанных вопросов^_^