发布网友 发布时间:2022-04-28 10:32
共3个回答
热心网友 时间:2023-09-26 12:35
D。
折半查找复杂度恒定是log2n,但二叉排序树最优时间复杂度是log2n,只有平衡二叉树才是log2n。
折半查找:必须要求记录有序,采用顺序存储,利用这个特点,所以折半查找的效率也比顺序查找高,对于数量非常大时,非常快,时间复杂度为O(logN)。
二叉查找树:若它的左子树不为空,则左子树上所有节点的值均小于根节点。若它的右子树不为空,则右子树上所有节点的值均小于根节点,它的左右子树都是二叉查找树。
扩展资料:
二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x。
时间复杂度即是while循环的次数。
总共有n个元素,
渐渐跟下去就是n,n/2,n/4,....n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数
由于你n/2^k取整后>=1
即令n/2^k=1
可得k=log2n,(是以2为底,n的对数)
所以时间复杂度可以表示O(h)=O(log2n)
参考资料来源:百度百科-二分查找
热心网友 时间:2023-09-26 12:35
C.有时不相同。
折半查找:必须要求记录有序,采用顺序存储,利用这个特点,所以折半查找的效率也比顺序查找高,对于数量非常大时,非常快,时间复杂度为O(logN)。
二叉查找树:如果它的左子树不是空的,那么左子树中的所有节点都小于根节点。如果它的右子树不是空的,那么右子树中所有节点的值都小于根节点的值,它的左子树和右子树都是二叉搜索树。
因此,二叉排序树不一定是平衡树。它只需要左右子树和根节点之间的大小关系。但是,由于没有左右子树层次差异的约束,所以通过二叉排序树搜索可能不满足logn。
例如,有多个左子树的交叉排序树。只有当它是一棵平衡二叉排序树时,其搜索时间的性能与二分搜索相似。
扩展资料:
二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x。
时间杂度即是while循环的次数。
总共有n个元素,
渐渐跟下去就是n,n/2,n/4,....n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数
由于你n/2^k取整后>=1
即令n/2^k=1
可得k=log2n,(是以2为底,n的对数)
所以时间杂度可以表示O(h)=O(log2n)
参考资料来源:百度百科-二分查找
热心网友 时间:2023-09-26 12:36
折半查找复杂度恒定是log2n,但二叉排序树最优时间复杂度是log2n,只有平衡二叉树才是log2n,