全文目录
☘前言☘
🎁主要知识点
二分查找
📓课后习题
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; }