您的位置:首页 > 其它

快速排序

2015-12-03 22:32 411 查看
#include<stdio.h>

void swap(int* a,int* b){

int c=*a;

*a=*b;

*b=c;

}

int mid(int a[],int start.int end){

int p=(start+end)/2;

if(a[start]>a[p])swap(&a[start],&a[p]);

if(a[p]>a[end])swap(&a[p],&a[end]);p

if(a[start]>a[p])swap(&a[start],&a[p]);

swap(&a[p],&a[end]);

return a[end];

}

void quick(int a[],int start,int end){

if(start>=end)return;

int gg=mid(a,start,end); //得到flag

int i=start-1;

int j=end;

while(1){

while(a[++i]>gg) ;

while(a[--j]<gg) ;

if(i<j)
swap(&a[i],&a[j]);

else
break;

}

swap(&a[i],&a[end]); //对应mid()中swap(&a[p],&a[end])

quick(a,start,i-1);

quick(a,i+1,end);

}

int main(){

int a[10]={9,5,7,1,3,2,6,4,8,0};

quick(a,0,9);

int i=0;

while(i<10){

printf("%d\n",a[i]);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: