c++ - QuickSort 不排序数组

标签 c++ arrays codeblocks qsort

我一直在尝试制作一个 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 元素上的 vector 具有从 0 到 n-1 的索引,因此还要修复你的 for 循环),所以你必须更改

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

st=0
dr=n-1

或者简单地说:

qsort(v, 0, n-1);

关于c++ - QuickSort 不排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31278558/

相关文章:

arrays - 对象数组是如何存储在内存中的?

c - 相同的两个代码,但其中之一在 c [代码块]-[VS2010] 中仍然有错误

C++ 删除类成员 Char*

c++ - 检查变量作为指针或值

c++ - 使用 memcpy、endian 将 unsigned long 转换为 std::vector?

c++ - 使用带有自定义图形的 r_c_shortest 路径( boost )

php - 从 mysql 输出数据到数组 json 让我抓狂

arrays - PostgreSQL JSON 构建一个没有空值的数组

c++ - 如何让用户只输入一个字符?

c - 在代码块 IDE 中获取垃圾值作为我的搜索值