quicksort
程序员文章站
2022-05-18 09:28:32
...
在这里插入代码片
#include<stdio.h>
int part(int a[],int p,int r);
void quicksort(int a[],int p,int r)
{
int q;
if(p<r)
{
q=part(a,p,r);
quicksort(a,p,q-1);
quicksort(a,q+1,r);
}
}
int part(int a[],int p,int r)
{
int x,i,t,j;
i=p-1;
x=a[r];
for(j=p;j<r;j++)
{
if(a[j]<=x)
{
i++;
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
t=a[i+1];
a[i+1]=a[r];
a[r]=t;
return i+1;
}
int main()
{
int a[8]={2,8,7,1,3,5,6,4};
int i;
quicksort(a,0,7);
for(i=0;i<8;i++)
{
printf("%3d",a[i]);
}
}
图中的partition即代码中的part函数是为了达到a[q]>a[i],i<q;
a[q]<a[j],j>q;是为了把a[r]放到中间