二分查找时间复杂度(二分查找最坏情况下比较次数)-万象-

二分查找时间复杂度(二分查找最坏情况下比较次数)

牵着乌龟去散步 万象 1 0

大家好,关于二分查找时间复杂度很多朋友都还不太明白,今天小编就来为大家分享关于二分查找最坏情况下比较次数的知识,希望对各位有所帮助!

本文目录

  1. 二分查找的查找长度是多少
  2. 算法时间复杂度o(1)和o(2)的区别
  3. 二分查找法的具体算法
  4. 在97个记录的由于顺序表中进行二分查找,更大比较次数是
  5. 顺序查找的时间复杂度
  6. 二分查找的平均查找长度是多少
  7. 一个运用二分查找算法的程序的时间复杂度是

一、二分查找的查找长度是多少

1、以二分查找 *** 从长度为10的有序表中查找一个元素时,平均查找长度为4。

2、二分查找也称折半查找(Binary Search),它是一种效率较高的查找 *** 。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

3、二分查找的时间复杂度是O(2为底的log(n)),也就是说它的平均查找长度只和该有序表的长度有关,当长度为10时,平均查找长度为log10(2为底),其>3,<4,所以平均查找长度为4次。

4、首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。

5、重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

6、参考资料来源:百度百科-二分查找

二、算法时间复杂度o(1)和o(2)的区别

1、O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。

2、时间复杂度为O(n),就代表数据量增大几倍,耗时也增大几倍。比如常见的遍历算法。所以O(2)相比于O(1)数据量会更多,同时需要执行的时间会更多。

3、一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),存在一个正常数c使得fn*c>=T(n)恒成立。记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度,简称时间复杂度。

4、时间复杂度O(n^2),就代表数据量增大n倍时,耗时增大n的平方倍,这是比线性更高的时间复杂度。比如冒泡排序,就是典型的O(n^2)的算法,对n个数排序,需要扫描n×n次。

5、比如O(logn),当数据增大n倍时,耗时增大logn倍(这里的log是以2为底的,比如,当数据增大256倍时,耗时只增大8倍,是比线性还要低的时间复杂度)。二分查找就是O(logn)的算法,每找一次排除一半的可能,256个数据中查找只要找8次就可以找到目标。

6、O(nlogn)同理,就是n乘以logn,当数据增大256倍时,耗时增大256*8=2048倍。这个复杂度高于线性低于平方。归并排序就是O(nlogn)的时间复杂度。

7、参考资料来源:百度百科—算法复杂度

三、二分查找法的具体算法

1、折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如果x<a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数组a的右半部继续搜索x。二分搜索法的应用极其广泛,而且它的思想易于理解,但是要写一个正确的二分搜索算法也不是一件简单的事。之一个二分搜索算法早在1946年就出现了,但是之一个完全正确的二分搜索算法直到1962年才出现。Bentley在他的著作《Writing Correct Programs》中写道,90%的计算机专家不能在2小时内写出完全正确的二分搜索算法。问题的关键在于准确地制定各次查找范围的边界以及终止条件的确定,正确地归纳奇偶数的各种情况,其实整理后可以发现它的具体算法是很直观的,我们可用C++描述如下:

2、 int BinarySearch(Type a[],const Type& x,int n)

3、 if(x==a[middle]) return middle;

4、 if(x>a[middle]) left=middle+1;

5、模板函数BinarySearch在a[0]<=a[1]<=...<=a[n-1]共n个升序排列的元素中搜索x,找到x时返回其在数组中的位置,否则返回-1。容易看出,每执行一次while循环,待搜索数组的大小减少一半,因此整个算法在最坏情况下的时间复杂度为O(log n)。在数据量很大的时候,它的线性查找在时间复杂度上的优劣一目了然。

四、在97个记录的由于顺序表中进行二分查找,更大比较次数是

在97个记录的由于顺序表中进行二分查找,更大比较次数是7次。

二分查找也称折半查找(Binary Search),它是一种效率较高的查找 *** 。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

根据顺序表二分法查找比较次数的计算公式:

查找失败时,至少比较a次关键字;查找成功时,最多比较关键字次数是b。

二分查找时间复杂度(二分查找最坏情况下比较次数)-第1张图片-

所以,当顺序表记录数 n=97时,log₂64<log₂97<log₂128,即6<log₂97<7,更大比较次数为7次。

在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。

由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序设计语言(例如c/c++)的数组来描述的。

顺序存储结构的主要优点是节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑c/c++语言中数组需指定大小的情况),结点之间的逻辑关系没有占用额外的存储空间。

采用这种 *** 时,可实现对结点的随机存取,即每一个结点对应一个序号,由该序号可以直接计算出来结点的存储地址。

但顺序存储 *** 的主要缺点是不便于修改,对结点的插入、删除运算时,可能要移动一系列的结点。

优点:随机存取表中元素、储存密度大。

缺点:插入和删除操作需要移动元素。

参考资料:百度百科-顺序存储结构

五、顺序查找的时间复杂度

(1)更好情况:要查找的之一个就是。时间复杂度为:O(1)

(2)最坏情况:最后一个是要查找的元素。时间复杂度未:O(n)

(3)平均情况下就是:(n+1)/2。

所以总的来说时间复杂度为:O(n)

2、二分查找:O(log2n)->log以2为底n的对数

3、插值查找:O(log(2)(log(2)n))->log以2为底的(log以2为底的n的对数)的对数

4、斐波那契查找:O(log2n)->log以2为底n的对数

(1)二叉树:O(log2n)~O(n)之间

6、分块查找:O(log2n)~O(n)之间

六、二分查找的平均查找长度是多少

1、以二分查找 *** 从长度为10的有序表中查找一个元素时,平均查找长度为4。

2、二分查找也称折半查找(Binary Search),它是一种效率较高的查找 *** 。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

3、二分查找的时间复杂度是O(2为底的log(n)),也就是说它的平均查找长度只和该有序表的长度有关,当长度为10时,平均查找长度为log10(2为底),其>3,<4,所以平均查找长度为4次。

4、首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。

5、重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

6、参考资料来源:百度百科-二分查找

七、一个运用二分查找算法的程序的时间复杂度是

一个运用二分查找算法的程序的时间复杂度是对数级别。

二分查找算法,也称折半查找算法,是一种高效的查找算法,用于在有序数组中查找指定的元素。该算法的基本思想是通过比较中间元素与目标值的大小关系,逐步缩小查找范围,直到找到目标值或确定目标值不存在。

首先,确定查找范围的起始和结束位置,通常为数组的之一个和最后一个元素。然后,计算中间位置,比较中间位置的元素与目标值的大小关系,若相等则找到目标值,结束查找。若目标值较小,则将查找范围缩小为前半部分,否则缩小为后半部分,重复上述过程直到找到目标值或查找范围为空。

在每一步中,二分查找算法将查找范围缩小一半,因此查找的次数取决于范围的大小。假设有n个元素,每次查找后查找范围减半,查找次数为log2n次,即为查找的时间复杂度。因此,运用二分查找算法的程序的时间复杂度是O(logn)。

二分查找算法的时间复杂度远低于线性查找算法(O(n)),特别在大规模数据查找时具有明显优势。二分查找广泛应用于各种搜索和查找场景,如在有序数组、有序链表、二叉搜索树等数据结构中进行查找操作。

二分查找算法要求查找的数据必须是有序的,如果数据无序,则需要先进行排序操作,增加了额外的时间复杂度。对于插入和删除操作频繁的情况,二分查找算法的优势并不明显,因为插入和删除操作会破坏有序性,需要重新排序。

虽然二分查找算法的时间复杂度非常低,但也有一些改进和优化的变种算法,例如插值查找、斐波那契查找等。这些算法根据特定的数据分布特点,通过合理的分割和计算策略,进一步提高了查找效率。

二分查找时间复杂度和二分查找最坏情况下比较次数的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

标签: 二分 查找 复杂度 次数 情况

上一篇南通普通话考试时间(江苏南通普通话报名)

下一篇当前分类已是最新一篇

抱歉,评论功能暂时关闭!