【2021-07-05】算法导论学习:day 1

关键概念

T(n): worst case - max time for sorting any input of size n
T(n): expected time - the weighted average time for sorting input of size n

Asymtotic Notation
\theta \ - \,notation:\ drop\,low\,order\,terms\,and\,ignore\,leading\,constants
Ex.\quad 3n^3+n^2-5n+6060\rightarrow \theta(n^3)

排序算法

十大经典排序算法 | 菜鸟教程

Merge Sorting - 归并排序

引用自菜鸟教程

python实现

def MergeSort(left, right):
    # 比较传过来的两个序列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:]  # 这时候i或者j到了序列的最后
    result += right[j:]

    print(result)
    return result


def SortByMerge(arr, size):
    if size <= 1:
        return arr

    i = int(size/2)
    left = SortByMerge(arr[:i], i)
    right = SortByMerge(arr[i:], size - i)
    return MergeSort(left, right)

arr = [12, 11, 13, 5, 7, 6]
print(SortByMerge(arr, len(arr)))

其余重点

递归算法分析

  • 代换法
  • 树形图法
  • 主方法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容