/*
* =====================================================================================
*
* 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;
}