Java数据结构——查找(未完待续)
一、二分查找
public class demo01 {
public static void main(String[] args) {
int[] nums = {
1,3,5,7,9,11,14,17,25,78,89,100};
int sel = select(7,nums);
if (sel == -1){
System.out.println("该数字不在数组中");
}else {
System.out.println("找到该数字,索引是:"+sel);
}
}
/**
* 二分查找
* @param num 被查找的数
* @param nums 被查找的数所在的数组
* @return
*/
public static int select(int num,int nums[]){
int min = 0;
int max = nums.length-1;
int mid ;
do {
mid = (min+max)/2; // 每一次新的循环,都先找这个区间的中间值
if (nums[mid] > num){
max = mid-1;
}else if(nums[mid] < num){
min = mid + 1;
}
if (min > max){
// 如果最小值大于最大值,循环会进入死循环,也说明要查找的数据不在此数组中。
return -1;
}
}while (num != nums[mid]); // 数据未找到,则继续下一轮循环
return mid;
}
}