//快速排序
#include<stdio.h>
void quick_sort(int [],int ,int);
int _qsort(int [],int ,int );
int main()
{
int len,i,low,high;
int array[]={49,38,65,97,76,13,27};
len=sizeof(array)/sizeof(array[0]);
low=0;
high=len-1;
quick_sort(array,low,high);
i=0;
while(i<len){
printf("%d\n",array[i]);
i++;
}
return 0;
}
//快速排序
void quick_sort(int array[],int low,int high)
{
int pos;
if(low<high){
pos=_qsort(array,low,high);
quick_sort(array,low,pos-1);
quick_sort(array,pos+1,high);
}
}
//一趟快速排序
int _qsort(int array[],int low,int high)
{
int i,j,tmp,key;
bool flag=true;
i=key=low;
j=high;
while(i<j){
if(flag){ //key==i
if(array[j]<=array[key]){
tmp=array[j];
array[j]=array[i];
array[i]=tmp;
key=j;
flag=!flag;
i++;
}
else
j--;
}
else{ //key==j
if(array[i]>=array[key]){
tmp=array[i];
array[i]=array[j];
array[j]=tmp;
key=i;
flag=!flag;
j--;
}
else
i++;
}
}
return key;
}
一步一步写算法(之快算排序)
最新推荐文章于 2024-01-14 19:22:50 发布