2_6快速排序

C++实现

class QuickSort {
public:
    void swap(int *A, int l, int r)
    {
        int tmp = A[l];
        A[l] = A[r];
        A[r] = tmp;
        return;
    }
    void q_sort(int *A, int left, int right)
    {
        if(right <= left){
            return;
        }else if(left + 1 == right){
            if(A[left] < A[right]){
                return;
            }else{
                swap(A, left, right);
                return;
            }
        }
        int idx = left;
        int idx_right = right;
        int curr = A[left];
        for(int i=left+1; i<=right; i++){
            if(A[idx+1]<curr){
                swap(A, idx, idx+1);
                ++idx;
            }else{
                swap(A, idx_right, idx+1);
                --idx_right;
            }
        }
        A[idx] = curr;
        q_sort(A, left, idx-1);
        q_sort(A, idx+1, right);
        return;
    }
    int* quickSort(int* A, int n) {
        // write code here
        q_sort(A, 0, n-1);
        return A;
    }
};

python 实现

# -*- coding:utf-8 -*-

class QuickSort:
    def quickSort(self, A, n):
        # write code here
        if 1==n:
            return A
        elif 2==n:
            return [min(A), max(A)]

        curr = A[0]
        split_A = [0]*n
        idx_head = 0
        idx_tail = n
        for i in xrange(1,n):
            if curr > A[i]:
                split_A[idx_head] = A[i]
                idx_head += 1
            else:
                split_A[idx_tail-1] = A[i]
                idx_tail -= 1
        split_A[idx_head] = curr
        if split_A[:idx_head]:
            A_left = self.quickSort(split_A[:idx_head], idx_head)
        else: A_left = []
        if split_A[idx_tail:]:
            A_right = self.quickSort(split_A[idx_tail:],len(split_A[idx_tail:]))
        else: A_right = []
        return A_left + [curr] + A_right
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,725评论 6 427
  • 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入...
    小小不懂11阅读 8,739评论 2 30
  • GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常丰富,涉及面非常广。awesome-p...
    若与阅读 19,008评论 4 418
  • 我承认,我很自私,脆弱,也很敏感。 我是个一直追求精神世界的人。就如廖一梅所说“遇到爱,遇到性都不稀罕...
    尖娃阅读 3,233评论 8 4
  • 错误不可避免,所以犯错之后的罪责感也无法逃脱。即使是现在觉得无所谓,在特定的时候特定的地点也会有所感受。就像一个人...
    闻宠辱阅读 1,648评论 0 1

友情链接更多精彩内容