Chinaunix首页 | 论坛 | 博客
  • 博客访问: 148149
  • 博文数量: 69
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 602
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-25 20:56
文章分类

全部博文(69)

文章存档

2015年(68)

2014年(1)

我的朋友

分类: LINUX

2015-03-07 16:33:28

#include
 5   1   8    3  10  
left                 right
先从右开始找比5小的,然后赋给left 
3  1  8  3 10
再从 左边开始找比5大的是8 赋给right 
3 1 8 8 10 

31 5 8 10
然后再比 3 1和8 10递归

 

int partition(int a[],int left,int right)
{
    int i=left;
    int j=right;
    int temp=a[i];
    while(i     {
        while(i=temp)
            j--;
            if(i                 a[i]=a[j];
        while(i             i++;
            if(i                 a[j]=a[i];
    }
    a[i]=temp;
    return i;
}
void quickSort(int a[],int left,int right)
{
    int dp;
    if(left     {
        dp=partition(a,left,right);
        quickSort(a,left,dp-1);
        quickSort(a,dp+1,right);
    }
}


int main()
{
    int a[9]={5,4,9,1,7,6,2,3,8};
    quickSort(a,0,8);
    for(int i=0;i<9;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}
阅读(825) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~