C++STL之快速排序

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
/*****************************
*quickSort.h
******************************/
#include "stdafx.h"
#include <vector>
 
using namespace std;
template <typename T>
void quickSort(vector<T>& vec)
{
    quickSort(vec, 0, vec.size()-1);
}
 
template <typename T>
void quickSort(vector<T>& vec, int left, int right)
{
    while (left >= right)
    {
        return;
    }
    int low        = left;
    int high   = right;
    T   pivot    = vec[left];
    while(low < high)         // 循环,交换pivot左边和右边的数,直至所有左边的数小于pivot,所有右边的数大于pivot
    {
        while (low < high && pivot <= vec[high])
            high--;
        vec[low] = vec[high];   //一次交换中把小的数放到左边
        while(low < high && pivot >= vec[low])
            low ++;
        vec[high] = vec[low];   //一次交换中把大的数放到右边
    }
    vec[low] = pivot;    // 循环结束,此时low = high ,
 
    //将pivot两边的数组继续递归排序
    quickSort(vec, left, low -1);    
    quickSort(vec, high+1, right);
}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:Javascript监测网络状况

下一篇:利用HttpClient进行http文件上传