第四章 二分查找(数组)

来源:互联网 发布:网络技术交流论坛 编辑:程序博客网 时间:2024/05/18 01:48
习题

1.给定的l 和 h 的范围包括-1 和 n两个哨兵节点的范围, n为0时, l和h 的最小值分别为-1, 和 0

 l 是 [0, n], h 是 [-1, n)   使得 l + h 的范围在[-1, 2n - 1]之间

同时,表明我们不会访问数组哨兵元素,因为哨兵是 l-1, 和 u+ 1; l-1 最小是 -1, u+1 最大是 n, 都不在数组的l 和 h 的范围之内

哨兵的使用

int Sequential_Search2(int *a int n,int key)  {      int i=0;      a[0]=key;//哨兵      i=n;      while(a[i]!=key)      {          i--;      }      return i;//返回0就是查找失败  }  
i=0;while(i<n){  max=x[i];  x[n]=max;  i++; while(x[i]<max)  i++;}
求n个数中的最大值
</pre><pre code_snippet_id="1658718" snippet_file_name="blog_20160423_2_7559897" name="code" class="cpp">int Sequential_Search2(int *a int n,int key)  {      int i=0;      a[0]=key;//哨兵      i=n;      while(a[i]!=key)      {          i--;      }      return i;//返回0就是查找失败  }  
                                                                                                                                                          
0 0
原创粉丝点击