快速排序算法

#include<stdio.h>
void swap(int *p,int *q)
{
     if(p==q)
     return;
     else
     {
         int tmp=*p;
         *p=*q;
         *q=tmp;
     }
}

int Partition(int *arr,int p,int r)
{
     int x=arr[r];
     int i=p-1;
     int j=p;
     for(;j<=r-1;j++)
     {
         if(arr[j]<=x)
         {
             i=i+1;
             swap(&arr[i],&arr[j]);
         }
     }
     swap(&arr[i+1],&arr[r]);
     return i+1;
}

void QuickSort(int *arr,int p,int r)
{
    if(p<r)
    {
           int q=Partition(arr,p,r);
           QuickSort(arr,p,q-1);
           QuickSort(arr,q+1,r);
    }
}
int main()
{
    int arr[]={0,12,3,45,2,345,67,6,88,6};
    int length=sizeof(arr)/sizeof(arr[0])-1;
    QuickSort(arr,1,length);
    int i=1;
    for(;i<=length;i++)
    {
        printf("%d ",arr[i]);
    }
    
    system("pause");
    return 0;
}

posted @ 2013-09-14 09:37  liguigen  阅读(176)  评论(0编辑  收藏  举报