2013-12-08 109 views
-2

該程序給我錯誤信息。我不知道是什麼原因導致這個錯誤,你會幫助我嗎?使用C++快速排序錯誤

error C2109: "subscript requires array or pointer type " 

這裏是您使用input作爲一個數組,而這是一個int代碼

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很多先生 – user3079249

回答

0

。你可能已經忘記把[]

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

而且,你有一些錯別字,如o代替0,冗餘}和...

Here is a live working code

+0

感謝ALOT SIR我的重大錯誤:)'可能上帝保佑你 – user3079249

+0

只有1個問題plzzzz「我怎麼能知道沒有比較和交換在我的quicksort數組plz幫助茲茲 – user3079249

+0

最簡單的方法是放置標誌另一種方法是檢查數組是否被排序過。 – deepmax

2

input被聲明爲整數但你試圖訪問input[(i+j)/2]

1

輸入應該是一個指向輸入數組頭部的指針,你的func頭部應該聲明它是一個指針還是一個數組。

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

感謝您的朋友SIR – user3079249