##來個題目練習一下吧
使用二分法來快速判斷亂數在不在該陣列內
二分法也叫折半法,是一種在有序陣列中查詢特定元素的演演算法。
//先設一組有序陣列,再設亂陣列v
import java.util.Random;//導包必不可少哦
Random rand = new Random();
int[] arr = {3,7,13,18,19,21,24,26,29,31,32,38,41,44,45,47,50};
int v = rand.nextInt(50) + 1;
int begin=0,end =arr.lenght-1,mid=(end+begin)/2,ix=-1;//ix=-1
while(begin<=end){
if(v<arr[mid]) end=mid-1;
else if(v>arr[mid]) begin=mid+1;
else{
ix=mid;
break;//跳出迴圈
}
mid =(end+begin)/2;
}
System.out.println(v);
System.out.println(v+ (ix>-1 ? "是" +ix :"不是"));
從if判斷可以看出,end是直接縮小一半為mid-1.同理begin=mid+1;
這樣查詢可以大大縮小範圍。從而更好的判斷該數值是不是這個陣列內的,最後一個三元運運算元判斷該數值在第幾位。