設a[0:n-1]是已排好序的陣列,請改寫二分搜尋演算法,使得當x不在陣列中時,返回小於x的最大元素位置i和大於x的最小元素位置j。當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置。
輸入格式:
輸入有兩行:
第一行是n值和x值; 第二行是n個不相同的整數組成的非降序序列,每個整數之間以空格分隔。
輸入樣例:
在這裡給出一組輸入。例如:
6 52 4 6 8 10 12
輸出樣例:
在這裡給出相應的輸出。例如:
1 2
#include
using
namespace std;
intmain()
int low=0;
int high=n-1;
int m=
0,j=
0,mid;
while
(low<=high)
if(x>a[mid]
)else}if
(x)//當x不存在並且小於最小值時
if(x>a[n-1]
)//當x不存在並且大於最大值時
if(x>a[mid]
&&x)//判斷mid下標的值是否小於要查詢的目標值,是的話就輸出mid下標和mid+1, 比如要找5,而mid下標的值為4 那麼mid+1下標對應的值就肯定比5大,所以輸出mid和mid+1
if(a[0]
)//這裡判斷和輸出的原理和上面相同
return0;
}
改寫二分搜尋演算法
1 實踐題目 7 2 改寫二分搜尋演算法 2.問題描述 3.演算法描述 不能貼上程式 在基本的二分查詢裡面做改進,滿足題目要求。一開始我是對越底界,越高界,直接找得到,以及在兩者之間四個情況分開來寫,但是覺得這種方法不好。後來改進的話就直接對low和high兩個指標進行操作。在二分迴圈while l...
改寫二分搜尋演算法
一 實踐題目 改寫二分搜尋演算法 二 問題描述 設a 0 n 1 是已排好序的陣列,請改寫二分搜尋演算法,使得當x不在陣列中時,返回小於x的最大元素位置i和大於x的最小元素位置j。當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置。輸入格式 輸入有兩行 第一行是n值和x值 第二行是n個不相同的整...
改寫二分搜尋演算法
設a 0 n 1 是已排好序的陣列,請改寫二分搜尋演算法,使得當x不在陣列中時,返回小於x的最大元素位置i和大於x的最小元素位置j。當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置。輸入有兩行 第一行是n值和x值 第二行是n個不相同的整數組成的非降序序列,每個整數之間以空格分隔。在這裡給出一組...