- ☘前言☘
- 主要知识点
- 二分查找
- 课后习题
- 704. 二分查找
- 写在最后
☘前言☘
今天是c语言基础打卡的第30天,今天这些题还是有点意思的。
相关链接:
【第30题】给定 n 个元素的升序整型数组,再给出一个值 target,求实现一个函数查找 nums 中 target 的下标
全文大约阅读时间: 10min
六作者简介:一个从工业设计改行学嵌入式的年轻人
✨联系方式:2201891280(QQ)
主要知识点 二分查找
在有序数组查找元素的时候,可以每次查看中间的元素值,根据中间元素的值缩小查找范围,是为二分。
int search(int n, int *nums, int target) {
int l = 0, r = n - 1; // 初始值
while(l <= r) { // 查找跳出条件
int mid = (l + r) >> 1; // 其实就是中间位置
if(nums[mid] == target) {
return mid; // 找到元素
}else if(target > nums[mid]) {
l = mid + 1; // 缩小范围
}else if(target < nums[mid]) {
r = mid - 1; // 缩小范围
}
}
return -1; // 没找到
}
课后习题 704. 二分查找
704. 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
解题思路
按照二分思想写就完事了,完全一样
int search(int* nums, int numsSize, int target){
int low = 0,high = numsSize - 1;
while(low <= high){
int mid = (low + high)/2;
if(nums[mid] == target) return mid;
else if(nums[mid] > target) high = mid-1;
else low = mid + 1;
}
return -1;
}
写在最后
最近考试,题目还好不难,不然真的是很难坚持下去呀。大家一起加油。这个c语言打卡也是从之前的几十人到现在就十几个人了0.0


![[解题报告]【第30题】给定 n 个元素的升序整型数组,再给出一个值 target,求实现一个函数查找 nums 中 target 的下标 [解题报告]【第30题】给定 n 个元素的升序整型数组,再给出一个值 target,求实现一个函数查找 nums 中 target 的下标](http://www.mshxw.com/aiimages/31/630631.png)
