O(lgn)的解释是:
将一个数据集分成两半,然后将分开的每一半再分成两半,依此类推
将一个数据集分成两半,然后将分开的每一半再分成两半,依此类推,在此过程中同时遍历每一半数据
以归并排序为例,可以把排序的过程看成一个倒立的二叉树:
从上面看到,倒立的二叉树叶子节点比较的次数,最差的情况下与二叉树的深度相同:就是从root找到一个叶子结点,复杂度为树高,也就是 log2 N。
每个叶子节点比较的次数就可以理解为从root找到每一个叶子结点,复杂度为树高*叶子结点个数,也就是log2 N * N。