当前位置: 首页 > news >正文

算法分析--分治--1.二分搜索

难题被逐层拆解,每一次的拆解都使它变得更为简单。分而治之揭示了一个重要的事实:从简单做起,一切都不再复杂。

1.1 分治算法

分治 是一种非常常见的算法策略。
分:将整个问题划分为多个小问题。
治:从小问题开始,自底至顶将子问题合并成原来的问题。
image

1.2 分治的效率

分治往往可以提高效率。

  • 降低时间复杂度
    冒泡排序为例,处理长度为n的数组需要O(n^2),但是将其划分为两个小数组就只要O(n +(n/2)^2 +(n/2)^2 + n )
  • 并行操作
    子问题之间是相互独立的,利于并行操作。、

1.3 分治之二分搜索

  • 题目描述
    给定一个包含 n 个元素有序的(升序)整型数组 nums 和一个目标值 target,要求实现搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。题目保证nums中的所有元素都不重复。
#include<iostream>
using namespace std;
int find(int num[],int tar,int n){int l=0,r=n-1;while(l<=r){int mid=(l+r)/2;if(num[mid]==tar) return mid;else if(num[mid]<tar) l=mid+1;else r=mid-1;}return -1;
}
int main(){int n;cin>>n;int num[n];for(int i=0;i<n;i++){cin>>num[i];}int tar; cin>>tar;cout<<find(num,tar,n);return 0; 
}
http://www.hskmm.com/?act=detail&tid=40187

相关文章:

  • Experiment3
  • 20232403 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • CF995F Cowmpany Cowmpensation
  • 关系运算符逻辑运算符
  • LLM什么时候才能输出固定格式
  • 代码大全2
  • MCP和Function Calling的区别
  • 《程序员修炼之道》 阅读笔记三
  • 20251027
  • sg.绑定键盘事件
  • HT-083 CSP J/S题解
  • 壁纸收集
  • 洛谷 P6965 [NEERC 2016] Binary Code /「雅礼集训 2017 Day4」编码 【经验值记录】(2-SAT 学习笔记)
  • CentOS7安装Miniconda
  • 我在博客修文物
  • [题解]P7914 [CSP-S 2021] 括号序列
  • 102302116 田自豪 作业1
  • Windows11安装miniconda
  • PyPDF无限循环漏洞CVE-2025-62707技术分析
  • 关于springboot+Servlet报错404的问题
  • 重组蛋白技术概述
  • 题解:luogu P4948 数列求和
  • Codechef Painting Tree 题解 [ 蓝 ] [ 树形 DP ] [ 概率期望 ] [ 分类讨论 ]
  • Linux运行命令三种方式对比
  • return
  • 10.27 CSP-S模拟40 改题记录
  • P14322 「ALFR Round 11」E 空崎ヒナ 题解
  • [题解]P7074 [CSP-J 2020] 方格取数
  • 昨天线下赛的复盘
  • 二分查找边界