首页 > 试题广场 >

设有序表中的元素为(13,18,24,35,47,50,62

[单选题]

设有序表中的元素为(13,18,24,35,47,50,62),则在其中利用二分法查找值为24的元素需要经过( )次比较。


  • 1
  • 2
  • 3
  • 4
共有7个结点:0-6编号
left=0,right=6;mid=3;
比较mid上的数据35,35>24,所以right=mid-1;此时的mid更新为1;
比较mid上的数据18;18<24,所以left=mid+1;此时的mid更新为2;
比较mid上的数据24;24==24,所以完成。  
发表于 2017-08-31 10:06:58 回复(2)
注意二分法查找时的节点编号是从零开始
发表于 2018-09-04 15:23:51 回复(0)
依次比较的元素为:35 -》18 -》24
发表于 2018-05-12 11:49:32 回复(0)
如下二分查找法: #include <stdio.h> int bsearch(int array[], int n, int v) {     int left, right, middle;     left = 0, right = n - 1;     while (left <= right) {         middle = left + (right - left) / 2;         if (array[middle] > v ) {             right = middle;         } else if (array[middle] < v) {             left = middle;         } else {             return middle;         }   }      return -1; } 第一次查找时,中间值为 35,而要查找的值为 24,所以中间值大于目标值 24,故把中间值赋值给 right;第二次查找的范围就在 13 和 35 之间了,此时的中间值为 (18 + 24) / 2 = 21 < 24,此时的中间值小于目标值,故把中间值赋值给 left;第三次的查找范围变成了 22 和 35 之间,此时,24 刚好位于这个中间值的位置,故要比较 3 次
发表于 2017-07-06 12:37:23 回复(2)