快速排序简单实现

来源:互联网 发布:游乐网软件下载 编辑:程序博客网 时间:2024/05/17 23:58
#include <stdio.h>#define MAX_NUM 80void quicksort(int* a, int p, int q){    int i=p, j=q;    int temp=a[p];    while(i<j){        //越过不小于基准值的数据        while (a[j]>=temp && j>i) j--;        if (i<j){//从小到大排序            a[i] = a[j];            i++;            //越过小于基准值的数据            while (a[i]<=temp && i<j) i++;            if (i<j){                a[j] = a[i];                j--;            }        }    }    a[i] = temp;//基准值最后的位置,完成子序列的分割    for (int k=p; k<=q; k++){        if (k==i){            printf("(%d) ", a[k]);            continue;        }        printf ("%d ", a[k]);    }    printf ("\n");    if (p < (i-1)) quicksort(a, p, i-1);    if ((j+1) < q) quicksort(a, j+1, q);}int main(void){    int a[MAX_NUM];    int n;    printf("Input total number: ");    scanf ("%d", &n);    if (n > MAX_NUM) n=MAX_NUM;    for(int i = 0; i < n;i++)    {        scanf("%d",&a[i]);    }    printf("Divide sequence:\n");    quicksort(a,0,n-1);    printf("The sorted result:\n");    for(int i = 0; i < n;i++)    {        printf("%d ",a[i]);    }     printf("\n");    getchar();getchar();    return 0;}