演演算法-二分法

2020-10-06 11:00:16

##來個題目練習一下吧
使用二分法來快速判斷亂數在不在該陣列內
二分法也叫折半法,是一種在有序陣列中查詢特定元素的演演算法。

//先設一組有序陣列,再設亂陣列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;
這樣查詢可以大大縮小範圍。從而更好的判斷該數值是不是這個陣列內的,最後一個三元運運算元判斷該數值在第幾位。