算法导论 练习 2.2

2023-11-14

2.2-1

答案: θ(n)
渐进符号的定义会在第三章里明确给出,所以这里就不写证明了,详细证明见第三章习题,好多好多啊

2.2-2

选择排序,数据结构课程基本排序算法之一

代码

SELECTION-SORT(A)
    n ← length[A]
    for j ← 1 to n − 1
        do smallest ← j
            for i ← j + 1 to n
                do if A[i ] < A[smallest]
                    then smallest ← i
            exchange A[ j ] ↔ A[smallest]

为什么只选头n-1个元素
这里书上我觉得题目不对,不是为什么只选头n-1个元素,应该是为什么只进行n-1次,可能是第二版翻译问题,因为随便举个例子”1 3 4 5 2“就不可能只对前n-1个元素操作。
进行n-1次,是因为选择排序每次选一个最小的出来,那n-1次后前n-1小的都选出来了,剩下的一定是最大的

复杂度
时间复杂度最烂排序算法,无论正序逆序乱序都是 θ(n²)

2.2-3

这题有点像求hash中的查找次数

如果是等可能的就是个等差数列:

(1+n)n2p
这里 p=1n
所以结果就是 (1+n)2

最坏情况很显然是 n

所以最好最坏都是θ(n)

2.2-4

如何修改一个算法,让他有更小的最好情况复杂度

这个问题很有意思,我本来的想法是比较两个算法,比如插入排序最好的时间复杂度是 θ(n) ,超过所有排序算法,然而教师手册给出的答案更绝:
预先对某一种输入生成一个只对这个输入正确的结果,然后碰运气,当然最好情况下是 θ(1)
哈哈哈哈

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法导论 练习 2.2 的相关文章

  • 区间图着色问题

    这是算法导论贪心算法一章的一个习题 题目描述 假定有一组活动 我们需要将它们安排到一些教室 任意活动都可以在任意教室进行 我们希望使用最少的教室完成所有的活动 设计一个高效的贪心算法求每个活动应该在哪个教室进行 这个问题称为区间图着色问题
  • 算法导论 第三节 分治法

    分治法 1 分 把一个大问题分成若干个小问题 即原问题的n变小 2 治 递归的解决每一个子问题 然后把这些子问题的解合并成整个大问题的解 归并排序 1 一分为二 2 递归的对每一个子数组进行排序 3 合并 线性的n时间内就可以完成 归并排序
  • 最大子数组问题

    最大子数组问题 本文只是做一个记录 更细致的思路请查看算法导论 最大子数组结构体 typedef struct int low high sum SubArray 暴力求解 计算所有的数组区间的和进而得到最大的子数组 算法复杂度为 n 这种
  • NP完全性理论与近似算法

    一 NP完全性理论 1 在图灵机计算模型中 移动函数 是单值的 即对于Q Tk中的每一个值 当它属于 的定义域时Q T L R S k 中只有唯一的值与之对应 称这种图灵机为确定性图灵机 简记为DTM Deterministic Turin
  • 二分搜索树

    经典写法 内心os 就是有点繁琐hh include
  • ​LeetCode刷题实战88:合并两个有序数组

    算法的重要性 我就不多说了吧 想去大厂 就必须要经过基础知识和业务逻辑面试 算法面试 所以 为了提高大家的算法能力 这个公众号后续每天带大家做一道算法题 题目就从LeetCode上面选 今天和大家聊的问题叫做 合并两个有序数组 我们先来看题
  • ​LeetCode刷题实战214:最短回文串

    算法的重要性 我就不多说了吧 想去大厂 就必须要经过基础知识和业务逻辑面试 算法面试 所以 为了提高大家的算法能力 这个公众号后续每天带大家做一道算法题 题目就从LeetCode上面选 今天和大家聊的问题叫做 最短回文串 我们先来看题面 h
  • 写一个个人认为比较详细的adaboost算法

    最近在看机器学习中adaboost adaptive boostint 算法部分的内容 在csdn上面查找一番发现 好像没有讲的特别的详尽的 当然可能是我人品不佳 所以没有找到 为了防止同样的事情发生在其他人的身上 所以就写了这篇博文 尽量
  • 『数据结构』B树(B-Tree)及其变体 B+树,B*树

    原文地址 1 背景 当有大量数据储存在磁盘时 如数据库的查找 插入 删除等操作的实现 如果要读取或者写入 磁盘的寻道 旋转时间很长 远大于在 内存中的读取 写入时间 平时用的二叉排序树搜索元素的时间复杂度虽然是 O log2n O l o
  • NlogN复杂度寻找数组中两个数字和等于给定值

    算法导论 22页2 3 7 描述一个运行时间为O nlogn 的算法 找出n个元素的S数组中是否存在两个元素相加等于给定x值 AC解 a 1 3 6 7 9 15 29 def find2sumx nums x nums sort le r
  • 算法导论学习--红黑树详解之删除(含完整红黑树代码)

    前面我们讨论了红黑树的插入的实现 基本思想是分类讨论 然后分情况讨论以后我们发现插入操作调整函数只需要处理三种情况 并不是太复杂 但是删除操作会更复杂一点 因为二叉搜索树的删除操作本身就分成了多种情况 这样在执行删除操作后要处理的情况会更多
  • 算法导论——插入排序——伪代码和Java实现

    第二章第一节 插入排序 我们首先介绍插入排序 相信大部分人都打过扑克牌 许多人喜欢发一张牌就拿一张牌到手上 并且按顺序来放好牌 开始时我们左手为空 牌在桌子上 然后我们每次从桌子上拿走一张牌并将它插入左手中的位置 为了找到一张牌的正确位置
  • 《算法导论》常见算法总结

    前言 本篇文章总结中用到很多其他博客内容 本来想附上原作链接 但很久了未找到 这里关于原创性均来源于原作者 分治法 分治策略的思想 顾名思义 分治是将一个原始问题分解成多个子问题 而子问题的形式和原问题一样 只是规模更小而已 通过子问题的求
  • 算法导论——分治法、归并排序——伪代码和Java实现

    第二章第三节 分治法 我们首先先介绍分治法 分治法的思想 将原问题分解为几个规模较小但类似于原问题的子问题 递归地求解这些子问题 然后在合并这些子问题的解来解决原问题的解 还是拿扑克牌举例子 假设桌上有两堆牌面朝上的牌 牌面朝上 有值 每堆
  • ​LeetCode刷题实战26:删除排序数组中的重复项

    算法的重要性 我就不多说了吧 想去大厂 就必须要经过基础知识和业务逻辑面试 算法面试 所以 为了提高大家的算法能力 这个公众号后续每天带大家做一道算法题 题目就从LeetCode上面选 今天和大家聊的问题叫做 删除排序数组中的重复项 我们先
  • 计数排序--时间复杂度为线性的排序算法

    我们知道基于比较的排序算法的最好的情况的时间复杂度是O nlgn 然而存在一种神奇的排序算法 不是基于比较的 而是空间换时间 使得时间复杂度能够达到线性O n k 这种算法就是本文将要介绍的计数排序 一 适用情况 这个算法在n个输入元素中每
  • 红黑树(算法导论版)

    1 定义 1 每个节点是红色或者黑色的 2 根节点是黑色的 3 所有叶子结点 NIL 都是黑色的 4 如果一个节点是红色 则它的两个子节点都是黑色的 5 对每个节点 从该节点到其所有后代叶节点的简单路径上 均包含相同数目的黑色节点 2 性质
  • 算法导论三-分治法

    分治法 简单说 分治法即分而治之 即将问题分化为小问题来处理 简化起来看有二到三个步骤 分 将问题分解为若干子问题 复杂度n降低 治 递归解决子问题 合 合并子问题的解 常见分治法的递归式为 T n 2T n 2 n 即分为两个解法一样的子
  • 分治法 ( Divide And Conquer ) 详解

    文章目录 引言 分治法的范式 递归式 求解递归式的三种方法 代入法 递归树法 主方法 引言 在这篇 blog 中 我首先会介绍一下分治法的范式 接着给出它的递归式通式 最后我会介绍三种方法 代入法 递归树 和主方法 求解递归式 分治法的范式
  • 最常用的五大算法

    一 贪心算法 贪心算法 又称贪婪算法 是指 在对问题求解时 总是做出在当前看来是最好的选择 也就是说 不从整体最优上加以考虑 他所做出的仅是在某种意义上的局部最优解 贪心算法不是对所有问题都能得到整体最优解 但对范围相当广泛的许多问题他能产

随机推荐

  • [指针八]有关指针的面试题

    有关指针的经典面试题 C语言为何如此长寿并实用 C 为什么有那么多精彩 指针可以说是C C 中的灵魂所在 虽然早期中pascal也有指针 但是和C C 比起来不是一个级别的 今天为大家深入浅出的解析一下指针的有关笔试 面试题 所有题目来源网
  • 十三、Redis——最佳实践(Redis时参考的经验总结)

    目录 1 Redis健值设计 1 1 优雅的key结构 1 2 拒绝BigKey 1 2 1 BigKey的危害 1 2 2 如何发现BigKey 1 2 3 如何删除BigKey 1 3 恰当的数据类型 编辑 总结 2 批处理优化 2 1
  • R语言第五次实训,dplyr 、tidyr和lubridate处理数据

    题目1 1 数据处理 只用SY 20150401 csv 将数据处理成每条数据处于一天中的第几个5分钟 说明 00 00 01在第一个5分钟内 00 10 13 在第三个5分钟内 由于一天可能多次乘坐地铁 根据卡号和进站时间 查询最近出站的
  • 软复位与硬复位

    软复位与硬复位 1 软复位与硬复位 软复位信号名称中通常包含soft 硬复位信号名称中通常包含hard 软复位 常用于复位逻辑模块 硬复位 常用于配置寄存器模块 配置信号同步模块 硬复位有效会驱动软复位有效 一个模块出现问题时 可以使其软复
  • 物联网实训总结——简易的智能农场

    物联网实训总结 简易的智能农场 一 场景需求 1 农场环境监测 对农场的环境实现智能感知 对温度 湿度 光照值实时显示 同时检测农场烟雾状态 判断火情 实时监控农场人员出现情况 2 控制管理 智能农场控制部分分为 通风系统和补光系统 实现对
  • PAT Basic Level 1002 写出这个数

    import java util Scanner author djch date 2021 5 21 public class Main public static void main String args Scanner scanne
  • 多目录CMAKE文件的编写

    前言 对于单文件来说一个CMakeLists txt文件即可 但是大多数项目的文件都不可能只有一个文件 因此介绍下在多目录下CMakeLists xtx文件是如何编写的 思考 对于多目录CMAKE文件的编写应该怎样写呢 我们知道单目录文件只
  • RuoYi-Vue项目登录过期的实现

    登录逻辑 登录验证 param username 用户名 param password 密码 param code 验证码 param uuid 唯一标识 return 结果 public String login String usern
  • 分库分表实战之流量激增带来的技术挑战

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 前 言 接上期 到现在为止 我们已经对订单系统核心接口业务流程有了一定的了解 此时我们可以接一些简单的需求做了 同时这个时候 也会有对应的产品经理来和我们对接需求 一
  • Ubuntu下使用摄像头遇到的问题

    VIDEOIO ERROR V4L can t open camera by index 1 我在Linux下使用opencv库调用摄像头cvCreateCameraCapture 0 时出现该错误 原因是在 dev下video0变成了vi
  • 目标检测之YOLOv2算法分析

    要点 Batch Normalization 训练 若batchsize 64 某一层的某一个神经元会输出64个响应值 对这64个响应值求均值 标准差 然后标准化 对标准化的结果乘 lambda beta 其中
  • Cannot find template location: classpath:/templates/ (please add some templates or check your Thymel

    springboot配置了 thymeleaf 启动warning Cannot find template location classpath templates please add some templates or check y
  • 抓包相关,抓包学习

    检查网络流量 提琴手经典 telerik com Headers Reference Fiddler Classic telerik com 以上是fiddler官方文档 F12要勾选保留日志 不勾选的话跳转到新页面之前页面的日志不会在下方
  • 02-407控制底板PCB开发板资源介绍资料

    核心板 控制底板 反客 DIY 1 芯片介绍 stm32F407ZGT6 开发指南 产品 见淘宝 反客科技 核心板并没有使用STM32F407开发指南上的 因为它贵且许多功能没有用到 所以就使用反客的 芯片的一样 没事 开发板是李明枫老师画
  • C语言计算1-100之间的素数

    要计算素数 我们首先要明白素数的性质 也就是我们数学上的质数其实是一样的啦 素数 只能被一和它本身整除的数 这里提一下1既不是质数也不是合数 感觉想把自己说得话注释也挺难的哈 挺多地方写的应该看不懂吧反正我自己也有点看不懂自己写的啥哈哈 运
  • 这7个GitHub高级搜索技巧,你知道吗?

    前言 GitHub作为全球最大的同性交友 代码托管 平台 里面藏着巨大的资源宝库 一套Ctrl C和Ctrl V组合拳打出来 就没有你实现不了的需求 好了 废话不多说 下面介绍7个GitHub搜索高级技巧 让资源搜索不再困难 关键字 in
  • JPA——Date拓展之Calendar

    Java Calendar 是时间操作类 Calendar 抽象类定义了足够的方法 在某一特定的瞬间或日历上 提供年 月 日 小时之间的转换提供方法 一 获取具体时间信息 1 当前时间 获取此刻时间的年月日时分秒 Calendar cale
  • python卸载_可能是全网最详细的 Python 安装教程(windows)

    Python 是这两年来比较流行的一门编程语言 主要卖点是其相对简单的语法以及丰富的第三方库 下面我来带大家安装 配置 Python 文章最后有各种疑难杂症的解决方法 大体步骤有两步 安装 Python 让电脑学会这门语言 配置编辑器 方便
  • 让chatGPT回答一些有趣?无聊的问题

    本来我是没有国外的手机号的 也就没法注册chatGPT并使用 不过好在 csdn 的猿如意 里面有体验功能 我就顺便体验一下 这一次主要是看看chatGPT能否理解我的目的 很可惜 这一次并没有 其实第一次 chatGPT准确的回答出了 自
  • 算法导论 练习 2.2

    2 2 1 答案 n theta n 渐进符号的定义会在第三章里明确给出 所以这里就不写证明了 详细证明见第三章习题 好多好多啊 2 2 2 选择排序 数据结构课程基本排序算法之一 代码 SELECTION SORT A n length