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

算法-策略(递归,二叉搜索)

分而治之

一个大问题不断拆成各种小问题,大问题与小问题的方向要一致。

递归函数(递减)

分析时间函数的两种方法:递归树(跟踪树) ,代换法

例1

请添加图片描述
请添加图片描述

例2

请添加图片描述

请添加图片描述
这里的代换法注意,不要轻易的把常数加在一起,加在一起后看不出规律!!!!!!

例3

请添加图片描述
请添加图片描述

规律1

请添加图片描述

例4

请添加图片描述
请添加图片描述

规律2(最终定理!)请添加图片描述

递归函数(除法)

例1

请添加图片描述

例2

请添加图片描述

例3

请添加图片描述

规律!!!

请添加图片描述
根据规律做几个例子:
请添加图片描述

递归函数(根函数)

请添加图片描述

二分搜索迭代法

循环算法

首先要排序!!!例子如下:
请添加图片描述
算法如下(只是逻辑,不规范):

//A数组,n元素大小,key要搜索的键;返回找到元素的索引
int BinSearch(A,n,key){l=1;h=n;while(l<=h){mid=(l+h)/2if(key=A[mid]){return mid;}if(key<A[mid]){h=mid-1;}else{l=mid+1;}}return 0;
}

通过树形逻辑来分析 :
二叉搜索的时间复杂度为树深,即logn
图中n为15,加1是因为存在要找的键值不存在于数组中,那么就会有1的存在。
请添加图片描述

递归算法

Algorithm RBinSearch(l,h,key){if(l==h){if(A[l]==key){return l;}else{return 0;}  }else{mid=(l+h)/2;if(key==A[mid]) return mid;if(key<A[mid])  return RBinSearch(l,mid-1,key);if(key>A[mid])  return RBinSearch(mid+1,h,key);}
}

T(n)   1                n=1
          T(n/2)+1    n>1
根据前面的定理,时间复杂度为O(logn)

相关文章:

  • docker部署seata
  • Github中项目的公开漏洞合集
  • 2025年二级造价工程师备考要点分析
  • 从零开始了解数采(十七)——工业数据清洗
  • Mysql卸载
  • 亿固集团携手广东省民宿协会共启绿色民宿人居新范式
  • K-Means聚类算法
  • 【IC验证】systemverilog_并行线程(块)
  • 《Android 应用开发基础教程》——第四章:Intent 与 Activity 跳转、页面传值
  • 退役淘汰的硬盘数据安全处置不可忽视-硬盘数据抹除清零
  • 【机器学习-线性回归-1】深入理解线性回归:机器学习中的经典算法
  • SQL_连续登陆问题
  • 【前端Skill】点击目标元素定位跳转IDE中的源代码
  • LLM大模型中的基础数学工具—— 约束优化
  • 一个很简单的机器学习任务
  • 技术视界 | 开源新视野: 人形机器人技术崛起,开源社区驱动创新
  • 消息队列知识点详解
  • 基于RK3588+FPGA+AI YOLO的无人船目标检测系统(一)概述
  • 每天五分钟机器学习:凸优化
  • SBTI科学碳目标认证有什么要求?SBTI认证的好处?
  • 一年一CT,十年进ICU?关于CT检查致癌的真相
  • 承认出现误判,以军公布加沙救护车队遭袭事件调查结果
  • 广西柳州23年的蝶变:从“酸雨之城”到“文明之城”
  • 北京将严查大数据杀熟和强制搭售等五种网络销售违法行为
  • 董军与越南国防部长共同主持中越边境国防友好交流活动
  • “80后”张汉强已任浙江丽水市委常委、市纪委书记