折半查找法的原理是将有序表分成两部分,分别与待查找的值进行比较,从而缩小查找范围,直到找到目标值或者确定目标值不存在。

给定有序表 D={6,11,55,78,110,165,205,208,311,486,556,570,700,766,897,908},要在其中查找 186。

首先,确定有序表的起始位置和结束位置。起始位置为0,结束位置为15。

  1. 第一次查找: 取中间位置的元素,即 D[7]=208。 因为 208>186,所以目标值可能在前半部分。 更新结束位置为 7-1=6。

  2. 第二次查找: 取新的中间位置的元素,即 D[3]=78。 因为 78<186,所以目标值可能在后半部分。 更新起始位置为 3+1=4。

  3. 第三次查找: 取新的中间位置的元素,即 D[4]=110。 因为 110<186,所以目标值可能在后半部分。 更新起始位置为 4+1=5。

  4. 第四次查找: 取新的中间位置的元素,即 D[5]=165。 因为 165<186,所以目标值可能在后半部分。 更新起始位置为 5+1=6。

  5. 第五次查找: 取新的中间位置的元素,即 D[6]=205。 因为 205<186,所以目标值可能在后半部分。 更新起始位置为 6+1=7。

  6. 第六次查找: 起始位置和结束位置相等,即起始位置为结束位置为 7。 取中间位置的元素,即 D[7]=208。 因为 208>186,所以目标值不存在于有序表 D 中。

图示如下:

D={6,11,55,78,110,165,205,208,311,486,556,570,700,766,897,908}

第一次查找:
   0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
  [6, 11, 55, 78, 110, 165, 205, 208, 311, 486, 556, 570, 700, 766, 897, 908]
                                                                       ↑
第二次查找:
   0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
  [6, 11, 55, 78, 110, 165, 205, 208, 311, 486, 556, 570, 700, 766, 897, 908]
                                                     ↑
第三次查找:
   0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
  [6, 11, 55, 78, 110, 165, 205, 208, 311, 486, 556, 570, 700, 766, 897, 908]
                                                           ↑
第四次查找:
   0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
  [6, 11, 55, 78, 110, 165, 205, 208, 311, 486, 556, 570, 700, 766, 897, 908]
                                                                 ↑
第五次查找:
   0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
  [6, 11, 55, 78, 110, 165, 205, 208, 311, 486, 556, 570, 700, 766, 897, 908]
                                                                       ↑
第六次查找:
   0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
  [6, 11, 55, 78, 110, 165, 205, 208, 311, 486, 556, 570, 700, 766, 897, 908]
                                                                             ↑
第七次查找:
   0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
  [6, 11, 55, 78, 110, 165, 205, 208, 311, 486, 556, 570, 700, 766, 897, 908]
                                                                             ↑
折半查找法图示:在有序表 D 中查找 186

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

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