当前位置:   article > 正文

【基础算法】二分查找_有序表二分法查找次数

有序表二分法查找次数

目录

1.需求背景

2.解决方案

3.时间复杂度分析


1.需求背景

  • 总刷题,二分查找有序数组的相关应用不少,已经默背下来是入门水平了。

2.解决方案

  • 以升序整型数组为例,查找数字n在数组中的下标
    • 遍历的时间复杂度是O(n)
    • 二分查找的时间复杂度是O(logn)
  1. private int FindNIndex(int[] numbers, int n){
  2. int index = -1;
  3. int l=0,r=numbers.Length-1;
  4. while(l<=r){
  5. int mid = (l+r)/2;
  6. if(numbers[mid]==n){
  7. index = mid;
  8. break;
  9. }else if(numbers[mid]<n){
  10. l = mid+1;
  11. }else if(numbers[mid]>n){
  12. r = mid-1;
  13. }
  14. }
  15. return index;
  16. }

3.时间复杂度分析

二分查找在最坏的情况下依次是n/2,n/4,n/8... n/2^k一直查到1为止。k就是执行的次数

  • n*(1/2)^{k} = 1
  • n=2^k
  • k=logn

所以二分查找的时间复杂度是O(logn),在有序数组中的搜索应用非常的广泛且实用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/624416
推荐阅读
相关标签
  

闽ICP备14008679号