1. 程式人生 > >手寫快排及心得

手寫快排及心得

//遞迴法//
#include<stdio.h>
int quicksort(int a[],int left,int right)
{
    int i,j,key;
    if(left<right)
    {
        i=left,j=right,key=a[left];
        while(i<j)
        {
            while(i<j&&a[j]>key)         //後邊萬不可加分號//
                j--;
            if(i<j)
            {
                a[i]=a[j];
                i++;
            }
            while(i<j&&a[i]<key)
                i++;
            if(i<j)
            {
                a[j]=a[i];
                j--;
            }
        }
        a[i]=key;
        quicksort(a,left,i-1);
        quicksort(a,i+1,right);
    }

}

int main()
{
    int a[5];
    for(int i=0; i<5; i++)
    {
        scanf("%d",a+i);
    }
    int left=0,right=4;
    quicksort(a,left,right);
    for(int i=0; i<5; i++)
    {
        if(i)
            printf(" ");

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

        //等價於printf("%d",*(a+i));//

    }
    printf("\n");
    return 0;
}