下面是我的快速排序代码,无论出于什么原因,[]都没有被修改。我把它与互联网上提供的相比,它看起来很好。为什么会这样?
#include<iostream>
#include<string>
using namespace std;
void quicksort(int a[], int h, int l)
{
cout<<"enters the function";
for(int i=0;i<=h;++i)
cout << "value" << i << "=" << a[i];
int low = l;
int high = h;
int mid = a[(low+high)/2];
do
{
while(mid > a[low])
{
low++;
}
while(mid < a[high])
{
high--;
}
if (low < high)
{
int t = a[low];
a[low++] = a[high];
a[high--] = t;
}
} while(low <= high);
if(low < h)
{
quicksort(a,low,h);
}
if(high > l)
{
quicksort(a,l,high);
}
}
int main()
{
cout << "enter size";
int n;
cin >> n;
int d[15];
for(i=0;i<n;++i)
cin >> d[i];
quicksort(d,0,n-1);
cout << "the sorted array=";
for(int i=0;i<n;++i)
cout << d[i] << ',';
return 0;
}
输出与我输入的数组相同,没有任何更改。
答案 0 :(得分:4)
因为您使用high = 0和low = n-1调用quicksort。你的论点是相反的。
BTW:代码格式化与大多数C ++程序员的期望不同,但是感谢您提供实际编译和运行的代码。