[英]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;
}
提前致謝!
st
和dr
應該是要排序的初始索引和最終索引 ,而不是值 (還要記住,在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.