Python Algorithms – chapter3 计数初步

Posted on 2018-02-12 12:35  _hqc  阅读(153)  评论(0编辑  收藏  举报

 

一些基本递归式的解决方案及其应用实例

sub3

主定理的三种情况

master

排序算法之侏儒排序法

def gnomesort(seq):
    i = 0
    while i < len(seq):
        if i == 0 or seq[i-1] <= seq[i]:
            i += 1
        else:
            seq[i], seq[i-1] = seq[i-1], seq[i]
            i -= 1

排序算法之归并排序法

def mergesort(seq):
    mid = len(seq)/2
    lft, rgt = seq[:mid], seq[mid:]
    if len(lft) > 1: lft = mergesort(lft)
    if len(rgt) > 1: rgt = mergesort(rgt)
    res = []
    while lft and rgt:
        if lft[-1] >= rgt[-1]:
            res.append(lft.pop())
        else:
            res.append(rgt.pop())
        res.reverse()
        return (lft or rgt) + res