二分查找,时间复杂度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)个有界节点组成的层次关系的集合。 树属性每个节点有零个或多个子节点; 没有头节点的节点称为根节点。 每个非根...
要学习统计,首先了解概率问题很重要。概率涉及很多公式和理论,很容易被忽视,但它在工作和日常生活中发挥着重要作用。在讨论描述性统计中的一些基本概念之前,我们现在将探讨统计与概率之间的关系。 要求:与之前的博客类似,本文不要求读者具备统计知识,...
无监督学习是一种用于查找数据模式的机器学习技术。提供给无监督算法的数据是未标记的,这意味着仅给出输入变量(X),而没有相应的输出变量。在无监督学习过程中,算法自行发现数据中有趣的结构。 人工智能研究总监颜乐存解释说,无监督学习——教会机...