C 中快速排序函数的错误
Bug in quick sort function in C
#include<iostream>
using namespace std;
int swap(int *a,int i,int j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
int pivot(int *a,int low,int high)
{
int j,i=low-1,x=a[high];
for(j=i+1;j<high;j++)
{
if(a[j]<x)
swap(a,j,++i);
}
swap(a,i,high);
return i;
}
int quick(int *a, int low, int high)
{
if(low<high)
{
int p=pivot(a,low,high);
quick(a,low,p-1);
quick(a,p+1,high);
}
}
int main()
{
int a[]={3,2,1,5,8,7,5,6,9,8},i;
quick(a,0,9);
for(i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}
你能帮我弄清楚为什么这段代码没有给出输出吗?我尽力弄清楚了我的水平,但我不知道错误在哪里。我认为代码中存在一些小错误。
在 return 语句之前的数据透视函数中使用它。
swap(a,++i,high);
而不是
swap(a,i,high);
#include<iostream>
using namespace std;
int swap(int *a,int i,int j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
int pivot(int *a,int low,int high)
{
int j,i=low-1,x=a[high];
for(j=i+1;j<high;j++)
{
if(a[j]<x)
swap(a,j,++i);
}
swap(a,i,high);
return i;
}
int quick(int *a, int low, int high)
{
if(low<high)
{
int p=pivot(a,low,high);
quick(a,low,p-1);
quick(a,p+1,high);
}
}
int main()
{
int a[]={3,2,1,5,8,7,5,6,9,8},i;
quick(a,0,9);
for(i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}
你能帮我弄清楚为什么这段代码没有给出输出吗?我尽力弄清楚了我的水平,但我不知道错误在哪里。我认为代码中存在一些小错误。
在 return 语句之前的数据透视函数中使用它。
swap(a,++i,high);
而不是
swap(a,i,high);