本篇文章学习数列求和的一些方法。这些方法对后面学习算法的时间复杂度非常有帮助。

文章目录

  • 1. 数列求和公式
    • 1.1 二分搜索的时间复杂度求解
  • 2 估计和式上届的放大法
  • 3 估计和式渐近的界
  • 4 总结

1. 数列求和公式

下面这几个数列求和公式都是高中学过的公式。

  • 等差、等比数列和调和级数

下面给出一个求和的例子,使用了一些高中都会的变换的技巧:

学习上面的公式,主要是为了解决算法的时间复杂度,下面以二分搜索的时间复杂度为例,讲解如何利用上面的公式求解出,时间二分搜索的时间复杂度(关于时间复杂度的概念,可以参看以前的文章:【算法设计与分析】03 算法及其时间复杂度)。

1.1 二分搜索的时间复杂度求解

  • 假设二分数组为T[n],要搜索的数为:x。如下图是一个简单数组的搜索过程。


上述的二分搜索最终并没有找到要搜索的元素的位置。所以二分搜索的数据的输入情况,可以分为两种,一种是想要搜索的数x在数组中,一种是想要搜索的x不在数组中,那么一共就有2n+1中情况发生。如下图:

  • 左边是x在数组中,可以在任何一个位置出现,有n种情况。
  • 右边是x不在数组中,那么x出现在数组的两边或者在数组中两个元素的中间,就有n+1种情况
  • 所以一共有2n+1种输入情况。

注意:上述,假设n=2k-1,只是为了方便后面的计算。

现在已经知道了总的输入,还需要知道总的输入对应的比较的次数,才能计算出时间复杂度。
由分析可以看出,比较t次的输入的个数为:

所以:

  • 对于t= 1,2…k-1,比较t次的输入有 :2t-1 个 (这个对应的是x在数组中的情况)
  • 对于x不在数组中的情况,需要比较的次数是k,那么比较k次的输入就是:2k-1+n+1个。(式子中的n+1是对应的不在数组中非空隙的个数,2k-1 对应的是x在数组中的情况,因为就算要找的数不在数组中,也要将数组比较完全一遍才能够知道)

那么总次数就等于:对每个输入乘以这个输入对应的次数并求和

假设n=2k-1 ,各种输入的概率相等,则二分搜索平均时间复杂度为A(n):

上述的计算过程用到了一开始学习的几个公式以及变换技巧,自己慢慢掌握。

上述的计算结果大家都不陌生了,正式二分搜索的平均时间复杂度:logn

2 估计和式上届的放大法

放大法在高中大家学的都很熟练应该。

  • 放大法:

  • 放大法的例子

3 估计和式渐近的界

以下方法用到了基本微积分的概念。

求上届

求下届

上面的上届和下届都是同一个级别的,所以:

4 总结

本文学习了序列求和的基本公式:

  • 等差数列
  • 等比数列
  • 调和级数

对于无法计算的序列和,可以采用放大法求上届,用积分做和式渐近的界

这些基本的计算方法对计数循环过程的基本运算次数很有帮助。也就是算法的时间复杂度了。

【算法设计与分析】08 序列求和的方法相关推荐

  1. 计算机算法设计与分析 单峰序列

    1.单峰序列 问题描述 给定含有n个不同整数的数组L=<a1,a2,-,an>,如果L中存在ai,使得a1<a2<-<ai-1ai+1>->an.则称L是单峰 ...

  2. 算法设计与分析:动态规划(3)-序列联配问题(以算代存)

    文章目录 前言 高级动态规划 应用分治思想减少空间 计算得分 从后缀匹配到前缀匹配 伪代码 分治点计算改进 总结 本文参考UCAS卜东波老师算法设计与分析课程撰写 前言 本文内容承接上一次算法设计与分 ...

  3. 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述

    晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...

  4. 算法设计与分析:分治思想 - 入门

    文章目录 分治思想 判断分治的条件 分治思想在排序问题的应用 求逆序对的个数 分治总结 本文参考UCAS卜东波老师的计算机算法设计与分析课程完成 分治思想 分治思想可以归纳为两点: 将一个复杂问题化简 ...

  5. 算法设计与分析(python版)-作业一

    参考教材:算法设计与分析(Python版)         作者:王秋芬 1 . 容易 (4分)2 n=O(100n ^2) 错误 2 . 容易 (3分)10=θ(log10) 正确 3 . 容易 ( ...

  6. 【图的同构识别】算法设计与分析实验2

    计算机科学与工程学院实验报告 课程名称 算法设计与分析 班级 实验内容 实验2:图的同构识别 指导教师 姓名 重剑DS 学号 实验日期 2022.05.19 一.问题描述,含输入.输出数据内容.格式 ...

  7. 算法设计与分析基础-笔记-上

    算法设计与分析基础 绪论 什么是算法 一系列解决问题的明确指令,对于符合一定规范的输入,能够在有限的时间内获得要求的输出. 例子:最大公约数:俩个不全为0 的非负整数 m m m和 n n n的最大公 ...

  8. 【算法设计与分析】屈婉玲教授—课程笔记

    网课地址与课件 B站:[北大公开课] 算法设计与分析 屈婉玲教授 (76p) 课件:来源于评论区小伙伴分享(百度云)     提取码:1111 笔记 课程知识框架 算法设计思想 设计思想:尽量选复杂度 ...

  9. 天津理工大学研究生学位课《算法设计与分析》期末大作业

    2022- 2023学年度第一学期 研究生学位课< 算法设计与分析 > 期末大作业 2022级电子信息天理研究生 一.简答题 1.若,写出用Θ.Ω和О描述f(n) 的渐进表达.(7分) 答 ...

最新文章

  1. linux基础知识-链接列表
  2. C语言指针是什么?1分钟彻底理解C语言指针的概念
  3. select2 属性标签整理
  4. 没有绝对的技术,只有不停的创新
  5. 温故而知新 js 的错误处理机制
  6. beginnersbook 数据库教程
  7. Loading动画加载素材模板,UI设计师好帮手
  8. 使用vSAN RVC进一步了解vSAN环境
  9. C++编程问题--注意指针参数的传递
  10. FileStream:The process cannot access the file because it is being used by another process
  11. 传智php网课,传智自动刷网课视频工具
  12. PHP IE下载时提示”无法复制 无法读取源文件或磁盘”的解决办法
  13. Adobe Creative Cloud 2022 (macOS、Windows) TNT 合集
  14. ZTE 5G UPF 性能白皮书
  15. 计算机音乐数字乐谱青芒,弱水三千(戏腔付)
  16. The Last Non-zero Digit
  17. 使用 NetCat 工具实现远程文件传输
  18. 在线生成免费android ios图标
  19. 光速虚拟机手机谷歌服务器,光速虚拟机一款安卓上的模拟器,在安卓手机里再装一个安卓系统...
  20. alpinestars与丹尼斯_丹尼斯 VS A星,两虎相争骑士得利

热门文章

  1. spring mvc学习(41):restful的crud的项目原型介绍
  2. 第六十六期:运维专家写给运维工程师的6条人生忠告
  3. Python sqrt() 函数
  4. python 计算小于某个数_python 列表寻找满足某个条件的开始索引和结束索引、区间范围...
  5. 禁止微信公众号页面上下滑动
  6. 如何远程访问服务器的 Jupyter notebook
  7. python实现离线翻译_10分钟教你用Python实现微信翻译机器人
  8. js使用正则实现表单验证
  9. Python 黑帽子第二章运行截图
  10. HDFS Safemode问题