折半查找算法详解:以数组 [3, 14, 27, 31, 39, 42, 55, 70, 74, 81, 85, 93, 98] 为例

折半查找也称为二分查找,是一种高效的查找算法,适用于有序数组。其基本思想是不断将查找范围缩小一半,直到找到目标值或者查找范围为空。

下面以数组 [3, 14, 27, 31, 39, 42, 55, 70, 74, 81, 85, 93, 98] 为例,演示如何使用折半查找算法查找目标值 55:

  1. 确定数组中间位置的索引,即 mid = (0 + 12) / 2 = 6,对应元素为 42。
  2. 将目标值 55 与中间元素 42 进行比较,发现目标值较大,说明目标值在右半部分。
  3. 在右半部分 [55, 70, 74, 81, 85, 93, 98] 中进行折半查找,重复步骤 1 和步骤 2,得到 mid=3,对应元素为 81。
  4. 将目标值 55 与中间元素 81 进行比较,发现目标值较小,说明目标值在左半部分。
  5. 在左半部分 [3, 14, 27, 31, 39] 中进行折半查找,重复步骤 1 和步骤 2,得到 mid=2,对应元素为 27。
  6. 将目标值 55 与中间元素 27 进行比较,发现目标值较大,说明目标值在右半部分。
  7. 在右半部分 [31, 39] 中进行折半查找,重复步骤 1 和步骤 2,得到 mid=1,对应元素为 39。
  8. 将目标值 55 与中间元素 39 进行比较,发现目标值较大,说明目标值在右半部分。
  9. 在右半部分中 [55, 70, 74, 81, 85] 进行折半查找,重复步骤 1 和步骤 2,得到 mid=3,对应元素为 81。
  10. 将目标值 55 与中间元素 81 进行比较,发现目标值较小,说明目标值在左半部分。
  11. 在左半部分 [55, 70, 74] 中进行折半查找,重复步骤 1 和步骤 2,得到 mid=1,对应元素为 70。
  12. 将目标值 55 与中间元素 70 进行比较,发现目标值较小,说明目标值在左半部分。
  13. 在左半部分 [55] 中进行折半查找,重复步骤 1 和步骤 2,得到 mid=0,对应元素为 55。
  14. 找到目标值 55,返回其索引位置。

折半查找的优点:

  • 效率高:每次查找都能将查找范围缩小一半,时间复杂度为 O(log n),比线性查找效率高很多。
  • 应用广泛:折半查找广泛应用于各种数据结构和算法中,例如数据库索引、排序算法等。

折半查找的缺点:

  • 只能应用于有序数组:如果数组无序,则无法使用折半查找。
  • 查找效率取决于数组大小:数组越小,查找效率越高;数组越大,查找效率越低。

总而言之,折半查找算法是一种高效且广泛应用的查找算法,对于有序数组的查找效率非常高。


原文地址: https://www.cveoy.top/t/topic/oH7P 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录