编译结果有问题,但是我不知道到底哪里出问题。只觉得split部分有问题。求指点求改正。下面放代码及运行结果
#include<iostream.h>
int split(int A[],int low,int high)
{
int i=low;
int t;
for(int j=i+1;j<=high;j++)
if(A[j]<=A[low]){
i++;
if(i!=j)
t=A[i],A[i]=A[j],A[j]=t;
}
t=A[low],A[low]=A[i],A[i]=A[low];
return i;
}
void quicksort(int A[],int low,int high)
{
if(low<high)
{
int w;
w=split(A,low,high);
quicksort(A,low,w-1);
quicksort(A,w+1,high);
}
}
void main()
{
int A[]={NULL,4,6,3,1,8,7,2,5};
const int N=8;
for(int i=1;i<=N;i++)
cout<<A[i]<<" ";
cout<<endl;
quicksort(A,1,N);
for(i=1;i<=N;i++)
cout<<A[i]<<" ";
cout<<endl;
}
运行出来错误结果的图
------解决方案--------------------
算法,有专门的板块吧:http://bbs.csdn.net/forums/ST_Arithmetic
快速排序,这个是很成熟很固定的了,网上有大把的各种语言的现成的代码可以参考:http://baike.baidu.com/view/115472.htm