当前位置:   article > 正文

二分查找最坏查找次数_快速入门二分查找

binarysearch次数

5740d4746775a818ad1beae5d4f67d1c.png

二分查找

使用二分查找的前提

416aeb5ce5263a39a95f4fdd503aa166.png

模板

6dfe3010936ad7717504331b7657a6b4.png

常见的二分查找应用比如猜数字游戏

6348d2f48400036ce9bffca1a0c93ce2.png
  1. // 二分查找适用于有序的数组
  2. // 这个一个最简单的二分查找算法,前提是数组中不存在重复元素
  3. function binarySearch(arr, target) {
  4. if (arr && Array.isArray(arr)) {
  5. if (!arr.length) return -1
  6. let left = 0
  7. let right = arr.length - 1
  8. while (left <= right) {
  9. // let mid = Math.floor((left + right) / 2)
  10. let mid = Math.floor(left + (right - left)/2) // 防止left, right过大相加导致数值溢出
  11. if (arr[mid] === target) {
  12. return mid
  13. }
  14. if (arr[mid] > target) {
  15. right = mid - 1
  16. } else {
  17. left = mid + 1
  18. }
  19. }
  20. return -1
  21. }
  22. }
  23. // 二分查找除了使用循环实现以外还可以使用递归实现
  24. function bsearch(arr, target) {
  25. if (arr && Array.isArray(arr)) {
  26. return bsearchInternally(arr, 0, arr.length - 1, target)
  27. }
  28. }
  29. function bsearchInternally(arr, left, right, target) {
  30. if (left > right) return -1
  31. let mid = Math.floor(left + (right - left) / 2)
  32. if (arr[mid] === target) {
  33. return mid
  34. }
  35. if (arr[mid] > target) {
  36. return bsearchInternally(arr, left, mid - 1,
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/624573
推荐阅读
相关标签
  

闽ICP备14008679号