我们知道,对于一颗完全二叉树,节点总数为2^k-1,其中,k为总层数。反过来考虑,对于一棵总结点数为N的完全二叉树,其层数为logN-1,其中logN为向下取整。
而对于二分查找来说,如果要从[1,N]之间查找某一个数字,需要的比较次数为logN次。
所以对于一个数字N,当N=2k-1时对应的完全二叉树的层数k+1=二分查找的比较次数。而当2k-1-1<N<2k-1时,这个结论依然成立。
N | 二分法比较次数 | 二叉树层数 |
---|---|---|
1 | 0 | 1 |
2~3 | 1 | 2 |
4~7 | 2 | 3 |
8~15 | 3 | 4 |
我们知道,对于一颗完全二叉树,节点总数为2^k-1,其中,k为总层数。反过来考虑,对于一棵总结点数为N的完全二叉树,其层数为logN-1,其中logN为向下取整。
而对于二分查找来说,如果要从[1,N]之间查找某一个数字,需要的比较次数为logN次。
所以对于一个数字N,当N=2k-1时对应的完全二叉树的层数k+1=二分查找的比较次数。而当2k-1-1<N<2k-1时,这个结论依然成立。
N | 二分法比较次数 | 二叉树层数 |
---|---|---|
1 | 0 | 1 |
2~3 | 1 | 2 |
4~7 | 2 | 3 |
8~15 | 3 | 4 |