快速排序不是排序数组

QuickSort not sorting array

本文关键字:数组 排序 快速排序      更新时间:2023-10-16

我一直在尝试做一个qsort算法,但到目前为止我已经失败了。记住,在编程方面,我是一个新手,所以是的。在我构建并运行并输入我的数组之后,它会返回完全相同的数组,而不是对其排序。下面是有问题的代码:

 #include <iostream>
using namespace std;
int v[11], i, n, st, dr;
void qsort (int v[11], int st, int dr)
{
    int i=st, j=dr;
    int aux;
    int pivot = v[(st+dr)/2];
    while(i<=j)
        while(v[i]<pivot)
        {
            i++;
            if(i<=j)
            {
                aux=v[i];
                v[i]=v[j];
                v[j]=aux;
                i++;
                j--;
            }
        }
    if(st<j)
        qsort(v,st,j);
    if(i<dr)
        qsort(v,i,dr);
}

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>v[i];
    st=v[1];
    dr=v[n];
    qsort(v, st, dr);
    cout<<"vectorul sortat este"<<' ';
    for(i=1;i<=n;i++)
        cout<<v[i]<<' ';
    return 0;
}

提前感谢!

stdr应该是您想要排序的初始和最终索引,而不是(另外,请记住,在c++中,n个元素上的向量具有从0到n-1的索引,因此还可以修复您的for循环),因此您必须更改

st=v[1];
dr=v[n];

st=0
dr=n-1

或简单的:

qsort(v, 0, n-1);