[Python] 树

树 快速总结: 映射的不同实现间的性能对比: 有序列表 散列表 二叉搜索树 AVL 树 put $O(n)$ $O(1)$ $O(n)$ $O(\log_2{n})$ get $O(\log_2{n})$ $O(1)$ $O(n)$ $O(\log_2{n})$ in $O(\log_2{n})$ $O(1)$ $O(n)$ $O(\log_2{n})$ del $O(

- 阅读全文 -

[Python] 排序

排序是指将集合中的元素按某种顺序排列的过程。 分析排序过程: 首先,排序算法要能比较大小。为了给一个集合排序,需要某种系统化的比较方法,以检查元素的排列是否违反了顺序。在衡量排序过程时,最常用的指标就是总的比较次数。 其次,当元素的排列顺序不正确时,需要交换它们的位置。交换是一个耗时的操作,总的交换次数对于衡量排序算法的总体效率来说也很重要。 快速总结: 冒泡排序、选择排序和插入排序都是 $

- 阅读全文 -

[Python] 搜索

搜索 快速总结: 不论列表是否有序,顺序搜索算法的时间复杂度都是 $O(n)$。 对于有序列表来说,二分搜索算法在最坏情况下的时间复杂度是 $O(\log n)$。 基于散列表的搜索算法可以达到常数阶。 Python 提供了运算符 in,通过它可以方便地检查元素是否在列表中。 >>> 15 in [3, 5, 2, 4, 1] False >>> 3 in

- 阅读全文 -

[Python] 递归

递归三原则 所有的递归算法都要遵守三个重要的原则: 递归算法必须有基本情况; 递归算法必须改变其状态并向基本情况靠近; 递归算法必须递归地调用自己。 计算一列数之和 循环求和函数: def listsum(numList): theSum = 0 for i in numList: theSum = theSum + i return theSum 递归

- 阅读全文 -

[Python] 链表

无序列表抽象数据类型 无序列表是元素的集合,其中每一个元素都有一个相对于其他元素的位置。以下是无序列表支持的操作: List() 创建一个空列表。它不需要参数,且会返回一个空列表。 add(item) 假设元素 item 之前不在列表中,并向其中添加 item。它接受一个元素作为参数,无返回值。 remove(item) 假设元素 item 已经在列表中,并从其中移除 item。它接受一个元素作

- 阅读全文 -