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

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

分而治之

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

递归函数(递减)

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

例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)

http://www.xdnf.cn/news/995.html

相关文章:

  • Day-1 漏洞攻击实战
  • 74.搜索二维矩阵
  • Easysearch Rollup 相比 OpenSearch Rollup 的优势分析
  • MH2103系列coremark1.0跑分数据和优化,及基于arm2d的优化应用
  • 【c语言】深度理解指针4——sizeof和strlen
  • 你学会了些什么220120?--网页性能指标检测
  • docker数据目录迁移步骤
  • CopyOnWriteArrayList核心源码解析
  • 历史榜单的存储策略
  • 【系统架构设计师】信息安全的概念
  • Linux之信号
  • 【DataScript】标准数据格式化-国民经济行业分类(GB/T 4754-2017)
  • NLP高频面试题(四十八)大语言模型中的思维链(CoT)技术详解
  • Kafka 详细解读
  • 合同管理Contract Management
  • PowerBI工具提示-将表悬浮在数据上方
  • 【英语语法】词法---数词
  • 服务器数据迁移指南
  • docker基本命令1
  • 21-算法打卡-哈希表-三数之和-leetcode(15)-第二十一天
  • 鸿蒙系统ArkTs代码复习1
  • 多线程使用——线程池
  • 基于opencv和PaddleOCR识别身份证信息
  • RIP动态路由,实现两台PC互通三个路由器,两台电脑
  • 成功案例|TRAP1 与 CAMSAP3:早期子宫内膜癌预后的新 “风向标”
  • Federated Feature Augmentation and Alignment
  • Linux卸载删除gitlab
  • Vmware esxi 给现有磁盘增加空间后并扩展系统里磁盘空间
  • 文件内容课堂总结
  • Webpack 插件开发