int arr(int a[],int s,int y)
{
int tmp;
int i,j;
int tmp=a[s];
while(i!=j){
while(i<j&&a[j]>=tmp){
j--;
}
while(i<j&&a[i]<=tmp){
i++;
}
if(i<j){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[s]=a[i];
a[i]=tmp;
arr(a[],s,i-1);
arr(a[],i+1,y)
}
今天学习分治法,学习了快速排序方法,其中交换哨兵有两种简单的表示。
个人认为第一种相对于第二种更具有可读性。
int arr(int a[],int s,int y)
{
int tmp;
int i,j;
int tmp=a[s];
while(i!=j){
while(i<j&&a[j]>=tmp){
j--;
a[i]=a[j];
}
while(i<j&&a[i]<=tmp){
i++;
a[j]=a[i];
}
}
a[i]=tmp;
return i;
arr(a[],s,i-1);
arr(a[],i+1,y)
}