quick sort

前言

最近algorithm调的蛮happy,灵光一闪想实现下quicksort。
关于quicksort的基本原理和实现以及相关的参考资料,我找到两篇不错的:
基本原理:
知乎发现的
实现思路:
别人截的stl源码

我个人的实现代码

    void quicksort(vector<int>::iterator begin, vector<int>::iterator end)
    {
        if (begin == (end - 1))return;
        vector<int>::iterator left = begin; vector<int>::iterator right = end-1;
        int k = *left;
        while (left < right)
        {
            while (left<right && *right>=k)right--;  *left = *right;
            while (left < right && *left <= k)left++;  *right = *left;
        }
        *left = k;
        if(left!=(end-1))quicksort(left + 1, end);
        if(begin!=left)quicksort(begin, left);  
    }
    void quicksort(vector<int>& nums1, int begin, int end)
    {
        if (begin >= end)return;
        int left = begin; int right = end; int k = nums1[left];
        while (left < right)
        {
            while (left < right && nums1[right] >= k)right--; nums1[left] = nums1[right];
            while (left < right && nums1[left] <= k)left++;  nums1[right] = nums1[left];
        }
        nums1[left] = k;
        quicksort(nums1, begin, left - 1); quicksort(nums1, left + 1, end);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值