美文网首页
算法解析之快速排序

算法解析之快速排序

作者: dongwenbo | 来源:发表于2017-03-31 11:09 被阅读8次
快速排序

算法思路:
1、找到一个关键值(一般是第一个或者中值),将小于关键值的序列放在左边,大于关键值的序列放在右边
2、将左右两个序列分别使用1过程(递推过程)
3、最终各个序列退化至单个元素,递归开始回归,整个序列有序

C++

//核心代码
template <typename T>
//给关键值找到合适的位置,并返回所在的位置
int partition(T arr[],int low,int high){
    //选取第一个值作为关键值(中轴值)
    int keyValue = arr[low];
    //j为最终的中轴索引值
    int j = low;
    for (int i = low + 1; i <= high; i++) {
        if(arr[i] < keyValue){
            swap(&arr[++j], &arr[i]);
        }
    }
    swap(&arr[low], &arr[j]);
    return j;
}

template <typename T>
void quickSort(T arr[],int low,int high){
    //回归条件
    if (high>low) {
        //1步骤
        int q = partition(arr, low,high);
        //2步骤
        quickSort(arr, low, q-1);
        quickSort(arr, q+1, high);
    }
}

相关文章

网友评论

      本文标题:算法解析之快速排序

      本文链接:https://www.haomeiwen.com/subject/naumottx.html