> 文档中心 > [解题报告]【第30题】给定 n 个元素的升序整型数组,再给出一个值 target,求实现一个函数查找 nums 中 target 的下标

[解题报告]【第30题】给定 n 个元素的升序整型数组,再给出一个值 target,求实现一个函数查找 nums 中 target 的下标

请添加图片描述

全文目录

  • ☘前言☘
  • 🎁主要知识点
    • 二分查找
  • 📓课后习题
    • 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