排序算法-快速排序

/*
 * =====================================================================================
 *
 *       Filename:  quickSort.c
 *
 *    Description:  快速排序
 *
 *        Version:  1.0
 *        Created:  2016年11月19日 11时35分37秒
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  guoqingshan (ackevil), wyguoqingshan@163.com
 *   Organization:  
 *
 * =====================================================================================
 */
#include <stdlib.h>
#include <stdio.h>

void swap(int *a ,int* b){
    int temp=*a;
    *a=*b;
    *b=temp;
}

int partion(int a[],int lo ,int hi){
        int i=lo;
        int j=hi;
        int temp=a[lo];
        while(i<j){
           while(a[j]>=temp&&j>i)
                   j--;
           while(a[i]<temp&&i<j)
                   i++;
           if(i<j){
             swap(&a[i],&a[j]);
           }
        }
        swap(&a[lo],&a[j]);
        printf("%d",i);
        return i;

}

void sort(int a[],int lo, int hi){
    //确定第一个元素的位置
    if(hi<=lo)
      return ;
   int i= partion(a,lo,hi);
    sort(a,lo,i);
    sort(a,i+1,hi);


}

void quickSort(int a[],int len){
    sort(a,0,len-1);

}

int main(){
    int a[10]={2,1,5,8,4,12,5,4,3,9};
    printf("排序前\n");
    int i;
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    quickSort(a,10);
    printf("排序后\n");
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
        return 0;

}
posted @ 2016-12-02 17:10  时过境迁。  阅读(146)  评论(0)    收藏  举报