字数超出限制了...
快速排序 快速排序是由 C.A.R. 提出的。Hoare于1962年改进了冒泡排序。基本思想是:通过一次排序将待排序的数据分成两个独立的部分,其中一个部分中的所有值都小于另一部分中的所有值,然后快速将两个部分分别排序。 。所有的过程都可...
二分查找,时间复杂度O(logn),排序一次,查找多次,排序成本可以忽略不计;仅搜索一次,然后搜索顺序更好。 12 行非递归行和 10 行递归行。 # 源码: https://github.com/SpikeKing/data_struct...
冒泡排序,时间复杂度O(n^2),冒泡排序通常被认为是一种低效的排序方法。好处是:识别排序列表并提前结束排序。短气泡型是一种过早结束的气泡型。冒泡排序有4条线,短冒泡排序有8条线。 # 源码: https://github.com/Spik...
选择排序的Python代码,时间复杂度O(n^2),比较次数与冒泡排序相同,交换次数少于冒泡排序。选择排序 6 行。 # 源码: https://github.com/SpikeKing/data_structure_with_python...
插入排序,时间复杂度O(n^2),使用shift代替swap,shift操作时间约为swap时间的1/3。插入排序 7 行。 # 源码: https://github.com/SpikeKing/data_structure_with_py...
希尔排序,时间复杂度在O(n)~O(n^2)之间,也可以认为是O(n^3/2),相对于插入排序的改进,比较和偏移量更少,从而每次传递都会产生更“整洁”的子列表。 12行,其中5行用于增加,7行用于插入。 # 源码: https://gith...
归并排序,时间复杂度为O(nlogn)。 20 行。 # 源码: https://github.com/SpikeKing/data_structure_with_python def merge_sort(alist): """...
快速排序,时间复杂度O(nlogn)。不需要 14 行额外空间,需要 7 行额外空间。 # 源码: https://github.com/SpikeKing/data_structure_with_python def quick_sort...
Python算法回顾:二叉树深度&&宽度第一遍数据类型数据结构用于使用树结构来模拟数据收集。它是由n(n>0)个有界节点组成的层次关系的集合。 树属性每个节点有零个或多个子节点; 没有头节点的节点称为根节点。 每个非根...