1. 程式人生 > >演算法設計與計算(改寫二分搜尋演算法)(教材2-3)

演算法設計與計算(改寫二分搜尋演算法)(教材2-3)

二分搜尋 設a[0:n-1]是一個已排好序的陣列。請改寫二分搜尋演算法,使得當搜尋元素x不在陣列中時,返回小於x的最大元素的位置I和大於x的最大元素位置j

public static int binarySearch(int []a,int x,int n)
{int left=0;
int right=n-1;
int i=j=0;
while(left<=right)
{int middle=(left+right)/2
if(x==a[middle])
{i=j=middle;
cout<<i<<" "<<j<<endl;
return true;
//如果搜尋元素在陣列中,i=j=middle為x的位置
}
if(x>a[middle])
left=middle+1
else right=middle-1;
}
i=right;
j=left;
cout<<i<<" "<<j<<endl;
return false;
}