快速排序的实现

来源:互联网 发布:淘宝免费下载 编辑:程序博客网 时间:2024/06/05 12:09
#include <stdio.h>

int a[12]={1,20,10,30,50,8,9,100,99,12};
int quick(int left,int right);

int main()
{
    int i = 0;
    
    printf("原顺序:");
    for(i = 0;i < 10;i++){
        printf("%d ",a[i]);
    }
    printf("\n");
    printf("快排序:");
    quick(0,9);
    for(i = 0;i < 10;i++){
        printf("%d ",a[i]);
    }
    printf("\n");
}
int quick(int left,int right)
{
    int l,r,t;
    int temp;
    
    if(left > right){
        return;
    }
    l = left;
    r = right;
    temp = a[left];
    while(l != r){
        while(a[r] >= temp && l < r){
            r--;
        }
        while(a[l] <= temp && l < r){
            l++;
        }
        if(l < r){
            t = a[l];
            a[l] = a[r];
            a[r] = t;
        }
    }
    a[left] = a[l];
    a[l] = temp;

    quick(left,l - 1);
    quick(l + 1,right);
}