开始学习啦!第一天!
题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 `
输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4
输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1
题目说是排好序的,直接二分查找,若是无序的,则先进行一次冒泡排序。
//冒泡排序
for(i = 0; i < n; i++){
for(j = 0; j < n-i-1; j++){
if(nums[j] > nums[j + 1]){
//交换
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
//二分查找
//需要查找的值为x
int x = scanner.nextInt();
int low = 0, mid = 0, high = n-1;
while(low <= high){
mid = (low + high)/2;
if(x == nums[mid]){
return mid;
}
else if(x > nums[mid]){
low = mid + 1;
}
else {
high = mid -1;
}
}
return -1;
}