啊哈算法-快速排序


快速排序:不断地通过基准数将数值进行左右分区交换排序,直到剩下一个数时返回;

好久没写了,复习一下。

#include
void sort(int *a,int l,int r);//快排
int main(){
    int a[10],tem;
    for(int i=0;i<5;i++) scanf("%d",&a[i]);
    sort(a,0,4);
    for(int i=0;i<5;i++) printf("%d ",a[i]);
} 
void sort(int *a,int l,int r){
    int right=r,left=l;//right和left存左右端点
    if(l>=r) return ;
    else{
        int tem=a[l];
        while(l<r){
            while(r>l && a[r]>=tem) r--;
            a[l]=a[r];//找到右边小于tem的数填入 
            while(r>l && a[l]<=tem) l++;
            a[r]=a[l];//找到左边大于tem的数填入 
        }
        a[l]=tem;
        sort(a,left,l-1);
        sort(a,l+1,right);
    }
}