二分查找法
//java:
public static void main(String[] args) {
int [] arr = {11,22,33,44,55,66,77,88,99,100,111,122,133};
//要搜索的元素:
int num = 133;
//索引为0的位置
int sta = 0;
//索引为数组最末的位置
int end = arr.length-1;
//判定是否找到相应元素
boolean provision = true;
//放置循环条件:
while (sta<=end) {
//中间值
int mid = (sta + end)/2;
//如果中间的数等于寻找的值,打印后直接退出
if (num ==arr[mid]) {
System.out.println("您要查找的元素所在位置为:"+mid);
provision = false;
break;
}else if(arr[mid]>num) {//如果中间值大于要查找的元素,说明要找的数在中间偏左
end = mid-1;
}else if(arr[mid]<num) {//如果中间值小于要查找的元素,说明要找的数在中间偏右
sta = mid+1;
} }
//如果未找到元素
if (provision ==true) {
System.out.println("未找到该元素!");
}
}
结果:
public static void main(String[] args) {
int [] arr = {11,22,33,44,55,66,77,88,99,100,111,122,133};
//要搜索的元素:
int num = 133;
//索引为0的位置
int sta = 0;
//索引为数组最末的位置
int end = arr.length-1;
//判定是否找到相应元素
boolean provision = true;
//放置循环条件:
while (sta<=end) {
//中间值
int mid = (sta + end)/2;
//如果中间的数等于寻找的值,打印后直接退出
if (num ==arr[mid]) {
System.out.println("您要查找的元素所在位置为:"+mid);
provision = false;
break;
}else if(arr[mid]>num) {//如果中间值大于要查找的元素,说明要找的数在中间偏左
end = mid-1;
}else if(arr[mid]<num) {//如果中间值小于要查找的元素,说明要找的数在中间偏右
sta = mid+1;
} }
//如果未找到元素
if (provision ==true) {
System.out.println("未找到该元素!");
}
}
}
结果:
public static void main(String[] args) {
int [] arr = {11,22,33,44,55,66,77,88,99,100,111,122,133};
//要搜索的元素:
int num = 133;
//索引为0的位置
int sta = 0;
//索引为数组最末的位置
int end = arr.length-1;
//判定是否找到相应元素
boolean provision = true;
//放置循环条件:
while (sta<=end) {
//中间值
int mid = (sta + end)/2;
//如果中间的数等于寻找的值,打印后直接退出
if (num ==arr[mid]) {
System.out.println("您要查找的元素所在位置为:"+mid);
provision = false;
break;
}else if(arr[mid]>num) {//如果中间值大于要查找的元素,说明要找的数在中间偏左
end = mid-1;
}else if(arr[mid]<num) {//如果中间值小于要查找的元素,说明要找的数在中间偏右
sta = mid+1;
} }
//如果未找到元素
if (provision ==true) {
System.out.println("未找到该元素!");
}
}
}
结果:
public static void main(String[] args) {
int [] arr = {11,22,33,44,55,66,77,88,99,100,111,122,133};
//要搜索的元素:
int num = 133;
//索引为0的位置
int sta = 0;
//索引为数组最末的位置
int end = arr.length-1;
//判定是否找到相应元素
boolean provision = true;
//放置循环条件:
while (sta<=end) {
//中间值
int mid = (sta + end)/2;
//如果中间的数等于寻找的值,打印后直接退出
if (num ==arr[mid]) {
System.out.println("您要查找的元素所在位置为:"+mid);
provision = false;
break;
}else if(arr[mid]>num) {//如果中间值大于要查找的元素,说明要找的数在中间偏左
end = mid-1;
}else if(arr[mid]<num) {//如果中间值小于要查找的元素,说明要找的数在中间偏右
sta = mid+1;
} }
//如果未找到元素
if (provision ==true) {
System.out.println("未找到该元素!");
}
}
}
结果:
public static void main(String[] args) {
int [] arr = {11,22,33,44,55,66,77,88,99,100,111,122,133};
//要搜索的元素:
int num = 133;
//索引为0的位置
int sta = 0;
//索引为数组最末的位置
int end = arr.length-1;
//判定是否找到相应元素
boolean provision = true;
//放置循环条件:
while (sta<=end) {
//中间值
int mid = (sta + end)/2;
//如果中间的数等于寻找的值,打印后直接退出
if (num ==arr[mid]) {
System.out.println("您要查找的元素所在位置为:"+mid);
provision = false;
break;
}else if(arr[mid]>num) {//如果中间值大于要查找的元素,说明要找的数在中间偏左
end = mid-1;
}else if(arr[mid]<num) {//如果中间值小于要查找的元素,说明要找的数在中间偏右
sta = mid+1;
} }
//如果未找到元素
if (provision ==true) {
System.out.println("未找到该元素!");
}
}
}
结果:
public static void main(String[] args) {
int [] arr = {11,22,33,44,55,66,77,88,99,100,111,122,133};
//要搜索的元素:
int num = 133;
//索引为0的位置
int sta = 0;
//索引为数组最末的位置
int end = arr.length-1;
//判定是否找到相应元素
boolean provision = true;
//放置循环条件:
while (sta<=end) {
//中间值
int mid = (sta + end)/2;
//如果中间的数等于寻找的值,打印后直接退出
if (num ==arr[mid]) {
System.out.println("您要查找的元素所在索引为:"+mid);
provision = false;
break;
}else if(arr[mid]>num) {//如果中间值大于要查找的元素,说明要找的数在中间偏左
end = mid-1;
}else if(arr[mid]<num) {//如果中间值小于要查找的元素,说明要找的数在中间偏右
sta = mid+1;
} }
//如果未找到元素
if (provision ==true) {
System.out.println("未找到该元素!");
}
}
}
结果:
public static void main(String[] args) {
int [] arr = {11,22,33,44,55,66,77,88,99,100,111,122,133};
//要搜索的元素:
int num = 133;
//索引为0的位置
int sta = 0;
//索引为数组最末的位置
int end = arr.length-1;
//判定是否找到相应元素
boolean provision = true;
//放置循环条件:
while (sta<=end) {
//中间值
int mid = (sta + end)/2;
//如果中间的数等于寻找的值,打印后直接退出
if (num ==arr[mid]) {
System.out.println("您要查找的元素所在位置为:"+mid);
provision = false;
break;
}else if(arr[mid]>num) {//如果中间值大于要查找的元素,说明要找的数在中间偏左
end = mid-1;
}else if(arr[mid]<num) {//如果中间值小于要查找的元素,说明要找的数在中间偏右
sta = mid+1;
} }
//如果未找到元素
if (provision ==true) {
System.out.println("未找到该元素!");
}
}
}
结果:

备注:二分查找法只能应用与有序数组

浙公网安备 33010602011771号