网站大量收购独家精品文档,联系QQ:2885784924

《算法基础讲解》课件.pptVIP

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

算法基础讲解精通算法是编程的核心能力

课程概述1课程目标掌握算法基础知识与应用技巧2学习要求熟悉基本编程语言和数据结构考核方式

什么是算法?算法的定义解决问题的明确有限步骤算法的重要性支撑软件运行的基础影响程序执行效率

算法的特性有限性算法必须在有限步骤内完成确定性每步操作有确定的定义可行性算法步骤可以被执行

算法的表示方法自然语言用日常语言描述算法步骤流程图图形化表示算法逻辑流程伪代码介于自然语言与程序语言间的表示

算法复杂度分析时间复杂度算法执行所需时间与数据规模的关系空间复杂度算法执行所需空间与数据规模的关系复杂度分析帮助我们评估算法效率

大O表示法1定义描述算法在最坏情况下的渐近行为2忽略常数项关注数据规模对算法的影响3只关注最高次项当n足够大时决定性因素

算法效率比较1常数时间O(1)不受输入数据规模影响2对数时间O(logn)每次处理减少一定比例的数据3线性时间O(n)处理时间与数据规模成正比

算法效率比较(续)线性对数时间O(nlogn)高效排序算法的典型复杂度平方时间O(n2)嵌套循环处理数据指数时间O(2^n)穷举法的典型复杂度

渐进分析最坏情况分析保证算法性能下限1平均情况分析实际应用中的期望性能2最好情况分析理想条件下的性能上限3

基本数据结构回顾数组连续内存空间存储相同类型数据链表非连续节点通过指针相连栈后进先出(LIFO)数据结构队列先进先出(FIFO)数据结构

基本数据结构回顾(续)树层次化数据结构图由节点和边组成的非线性结构散列表通过键直接访问数据的结构

算法设计技巧分治法分解问题为子问题再合并解答动态规划存储子问题答案避免重复计算贪心算法每步选择当前最优解

算法设计技巧(续)回溯法尝试解决问题直到不可行时返回分支限界法剪枝策略避免无效有哪些信誉好的足球投注网站路径

排序算法概述1排序的定义将元素按特定顺序重新排列2内部排序所有数据在内存中完成排序3外部排序数据太大需要利用外部存储

冒泡排序算法原理相邻元素比较交换,大元素上浮代码实现双重循环,外层控制趟数,内层比较交换

冒泡排序(续)1最优时间复杂度O(n)2平均时间复杂度O(n2)3最差时间复杂度O(n2)

选择排序找最小元素每次遍历找出最小值交换位置与当前位置元素交换重复过程直到所有元素排序完成

选择排序(续)选择排序交换次数比冒泡排序少,但时间复杂度相同

插入排序1初始状态第一个元素视为已排序2取出元素取下一个元素3寻找位置在已排序序列中找到合适位置4插入元素将元素插入到该位置

插入排序(续)时间复杂度最好O(n),平均O(n2),最坏O(n2)空间复杂度O(1),原地排序算法适用场景小规模数据或基本有序数据

希尔排序1选择增量初始gap为n/2,逐渐减小到12分组插入排序对每组使用插入排序3不断缩小增量重复直到增量为1

希尔排序(续)不同增量序列影响排序效率,最优增量序列仍是开放问题

归并排序分解将数组分成两半1解决递归排序子数组2合并将排序后的子数组合并3

归并排序(续)时间复杂度O(nlogn),各种情况下都相同空间复杂度O(n),需要额外数组存储合并结果特点稳定排序,不受输入数据影响

快速排序1选择基准选取一个元素作为基准值2划分数组小于基准值放左边,大于放右边3递归排序对左右子数组递归进行快排

快速排序(续)时间复杂度平均O(nlogn),最坏O(n2)空间复杂度O(logn)递归调用栈空间优化方法随机选择基准元素避免最坏情况

堆排序堆的概念完全二叉树,父节点大于(小于)子节点堆的操作建堆、调整堆取堆顶元素

堆排序(续)1建立最大堆将无序数组构建成最大堆2交换堆顶元素堆顶与末尾元素交换3重新调整堆调整剩余元素成为新堆4重复过程直到所有元素排序完成

计数排序算法原理统计每个元素出现次数根据统计结果重建数组适用场景数据范围有限元素为整数元素分布集中

计数排序(续)O(n+k)时间复杂度n为元素个数,k为元素范围O(k)空间复杂度需要额外数组存储计数线性性能特点当k较小时,性能优越

桶排序算法原理将数据分到有限数量的桶中对每个桶单独排序桶的划分策略均匀划分提高效率基于数据分布特征确定桶数量

桶排序(续)1最佳时间复杂度O(n),当数据分布均匀2最差时间复杂度O(n2),当所有元素落入同一桶3空间复杂度O(n+k),k为桶的数量

基数排序按位排序从低位到高位或从高位到低位1收集元素按当前位的顺序收集元素2重复过程直到所有位都排序完成3

基数排序(续)LSD(最低位优先)从最低位开始排序适合位数相同的数据MSD(最高位优先)从最高位开始排序适合位数不同的数据时间复杂度:O(d(n+k)),d为位数,k为每位可能取值

排序算法比较算法平均时间最差时间空间稳定性冒泡O(n2)O(n2)O(1)稳定选择O(n2)O(n2)O(1)不稳定

文档评论(0)

scj1122118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8066052137000004

1亿VIP精品文档

相关文档