快速排序
#include<stdio.h>
#define maxx 100000
void swap(int a[],int i,int j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
int partition(int a[],int p,int r)
{
int x=a[p];
int i=p;
int j=r+1;
while(1)
{
while(i<r&&a[++i]<x);
while(a[--j]>x);
if(i>=j)
break;
swap(a,i,j);
}
swap(a,p,j);
return j;
}
int quicksort(int a[],int p,int r)
{
if(p<r){
int q=partition(a,p,r);
quicksort(a,p,q-1);
quicksort(a,q+1,r);
}
}
int main(int argc, char const *argv[])
{
int i;
int j;
int a[12]={1,5,6,3,2,4,7,9,10,13,8,16};
quicksort(a,0,11);
for(i=0;i<12;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
改编