美文网首页程序员
Python实现归并和快排,请大家参考

Python实现归并和快排,请大家参考

作者: kakarotto | 来源:发表于2018-05-21 12:42 被阅读0次

归并

def merge(left, right):
    i, j = 0, 0
    result = []
    while i < len(left) and j < len(right):
        if left[i] <= right[j]:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1
    result += left[i:]
    result += right[j:]
    return result


def merge_sort(lists):
    if len(lists) <= 1:
        return lists
    num = len(lists)//2
    left = merge_sort(lists[:num])
    right = merge_sort(lists[num:])
    return merge(left, right)

快排

def quick_sort(lists):
    less = []
    piv = []
    more = []
    if len(lists) <= 1:
        return lists
    p = lists[0]
    for i in lists:
        if i < p:
            less.append(i)
        elif i > p:
            more.append(i)
        else:
            piv.append(i)
    less = quick_sort(less)
    more = quick_sort(more)
    return less + piv + more

相关文章

  • Python实现归并和快排,请大家参考

    归并 快排

  • python实现快速排序

    受Haskell的快排启发 尝试了用python实现: 使用python实现更容易理解了(:зゝ∠)

  • 笔试题-python实现快排

    快排思路 简单来说,就是找一个key值作为参考值,每次都找第一个。然后,用一个临时变量存参考值,再从头到尾,逐个比...

  • python实现快排,选择排序

    选择排序 快速排序是一个重要D&C算法D&C算法(divide and conquer)—— 一种著名的递归式问题...

  • 排序算法:快速排序

    作为一个自己的复习记录,此处暂时只实现一个最简单的快排。关于快排更深入的探讨。参考本文末尾的链接。 基本思想:1,...

  • 操作说明

    py-mst-dbscan mst-dbscan算法使用Python实现,算法相关原理和具体细节,请参考: 201...

  • 转载:快排实现

    快速排序(Quicksort) 基本思想:(分治) 先从数列中取出一个数作为key值; 将比这个数小的数全部放在它...

  • js实现快排

    function quick_sort(list, start, end) {if (start < end) {...

  • 快排递归实现

    基本思想:(分治) 先从数列中取出一个数作为key值;将比这个数小的数全部放在它的左边,大于或等于它的数全部放在它...

  • 快排Java实现

    1、快排的核心思想: 1、从无序的数组中找到一个枢轴元素M,将数组一分为二:如将数组的第一个元素设置为枢轴元素。2...

网友评论

    本文标题:Python实现归并和快排,请大家参考

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