簡體   English   中英

QuickSort不對數組進行排序

[英]QuickSort not sorting array

我一直在嘗試制作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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM