第四章 二分查找(数组)

习题

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就是查找失败  
}  
                                                                                                                                                          

猜你喜欢

转载自blog.csdn.net/juttajry/article/details/51226025