使用C++的快速排序错误

quick sort error using C++

本文关键字:错误 快速排序 C++ 使用      更新时间:2023-10-16

这个程序给我错误消息。我不知道是什么原因导致了这个错误,你能帮我吗?

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");

}

input被声明为整数,但您试图访问input[(i+j)/2]

Input应该是指向输入数组头的指针,函数头应该声明它为指针或数组。

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

您使用input作为数组,而它是int。你可能忘了放[]:

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

此外,您还有一些拼写错误,例如o而不是0,一个多余的}和。。。

这是一个实时工作代码