快速排序

http://blog.sina.com.cn/s/blog_70441c8e0100pxuh.html


void quicksort(int a[], int low, int high)

{

int i = low;

int j = high;

int temp = a[i];  //比较基准值,  如果基准值是a[j]. 那下面的两个循环应该调换位置。

     

         if (low < high) {

while( i < j) {  //每一遍循环的结果是a[i]小于base, a[j]大于base.

while(a[j] >= temp && i < j)

j--;

a[i] = a[j];     //第一次覆盖a[i]是因为a[i]的值已经保存在temp变量里面, 后续循环覆盖是由于a[i]的值已经和基准值temp比较过了.

while(a[i] < temp && i < j)

                               i++;

 a[j] = a[i];  //a[i]的位置已经到a[j]了,所以下一轮循环a[j[可以覆盖a[i]的值。

}

a[i] = temp;  //基准值保存到中间位置

quicksort(a, low, i-1);

quicksort(a, j+1, high);



}

      

    




}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值