快速排序的实现

快速排序的实现

 快速排序是1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法。分治法的思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。

一种快速排序的简单实现:

template<class T>
void quick_sort(T array[],int low,int high){
    int i,j,pivot;
    if(low<high){
        pivot=array[low];
        i=low;
        j=high;
        while(i<j){
            while(i<j&&array[j]>=pivot])
                j--;
            if(i<j)
               array[i++]=array[j];
            while(i<j&&array[i]<=pivot)
                i++;
            if(i<j)
              array[j--]=a[i];
        }
       a[i]=pivot;
       quick_sort(a,low,i-1);
       quick_sort(a,i+1,high);
    }
}

 

这里pivot代表基准值,它的初始值为a[low],经过依次循环后,就确定了a[i]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值