数据结构 -- 第1章 绪论

1.1.3 起泡排序
局部有序与整体有序

在由一组整数组成的序列A[0, n - 1]中,满足A[i - 1] ≤ A[i]的相邻元素称作顺序的;否则是逆序的。
有序序列中每一对相邻元素都是顺序的,所有相邻元素均顺序的序列,也必然整体有序。

扫描交换

可以通过不断改善局部的有序性实现整体的有序:从前向后依次检查每一对相邻元素,一旦发现逆序即交换二者的位置。对于长度为n的序列,共需做n - 1次比较和不超过n - 1次交换,这一过程称作一趟扫描交换。
在这里插入图片描述

起泡排序

在这里插入图片描述
在起泡交换的过程中,尽管多数时候元素会朝着各自的最终位置不断靠近,但有的时候某些元素也的确会暂时朝着远离自己应处位置的方向移动。

1.1.4 算法

所谓算法,是指基于特定的计算模型,旨在解决某一信息处理问题而设计的一个指令序列。
需具备的要素:
① 输入与输出:在物理上,输出有可能存放于单独的存储空间中,也可能直接存放于原输入所占的存储空间中。上述排序是后者。
②基本操作、确定性与可行性
③有穷性与正确性:证明算法有穷性和正确性的一个重要技巧,就是从适当的角度审视整个计算过程,并找出其所具有的某种不变性和单调性。
其中的单调性通常是指,问题的有效规模会随着算法的推进不断递减。
不变性则不仅应在算法初始状态下自然满足,而且应与最终的正确性相呼应——当问题的有效规模缩减到0时,不变性应随即等价于正确性。

起泡排序算法的不变性和单调性可分别概括为:经过k趟扫描交换之后,最大的前k个元素必然就位;经过k趟扫描交换之后,待求解问题的有效规模将缩减至n - k。

④ 退化与鲁棒性
⑤ 重用性
算法模式可推广并适用于不同类型基本元素的这种特性,即是重用性的一种典型形式。

1.1.5 算法效率

① 可计算性
② 难解性
算法所需时间
③ 计算效率
从时间和空间等方面度量算法的计算成本
④ 数据结构

1.2 复杂度度量

1.2.1 时间复杂度

随着输入规模的扩大,算法的执行时间将如何增长?
执行时间的这一变化趋势可表示为输入规模的一个函数,称作该算法的时间复杂度time complexity)。
特定算法处理规模为n的问题所需的时间可记作T(n)。
在规模为n的所有输入中选择执行时间最长者作为T(n),并以T(n)度量该算法的时间复杂度。

1.2.2 渐进复杂度

若存在正的常数c和函数f(n),使得对任何n >> 2都有
T(n) ≤ c∙f(n)
则可认为在n足够大之后,f(n)给出了T(n)增长速度的一个渐进上界。此时,记之为:
T(n) = O(f(n))
大O记号的性质:
在这里插入图片描述
在大O记号的意义下,函数各项正的常系数可以忽略并等同于1
多项式中的低次项均可忽略,只需保留最高次项

将T(n)定义为算法所执行基本操作的总次数
在这里插入图片描述

大Ω记号是对算法执行效率的乐观估计——对于规模为n的任意输入,算法的运行时间都不低于Ω(g(n))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/457030.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Profinet转CC-LINK网关功能与配置方法

CC-LINK转Profinet网关(XD-PNCR20)支持CC-Link系统,采用一种开放式架构的工业现场总线协议,允许不同厂商的设备依此协议进行通信。由于其良好的兼容性,CC-Link广泛使用在在制造产业中的机器控制或程序控制中&#xff0…

第十四届蓝桥杯省赛真题 Java A 组【原卷】

文章目录 发现宝藏【考生须知】试题 A \mathrm{A} A : 特殊日期试题 B: 与或异或试题 C : \mathrm{C}: C: 平均试题 D: 棋盘试题 E : \mathrm{E}: E: 互质数的个数试题 F: 阶乘的和试题 G: 小蓝的旅行计划试题 H: 太阳试题 I: 高塔试题 J \mathrm{J} J : 反异或 01 串 发现…

怎么把mp4转换成amv格式?如何下载amv格式视频?

MP4(MPEG-4 Part 14)是一种通用的视频文件格式,广泛用于多媒体应用。作为MPEG-4标准的一部分,MP4以其卓越的压缩性能、出色的视频质量和广泛的兼容性成为当前最流行的视频格式之一。 AMV文件格式的介绍 AMV文件格式起源于中国公司…

day2-C++

1>自己封装一个矩形类(Rect),拥有私有属性:宽度(width)、高度(height), 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void show() 代码&#…

Synchronized的锁升级流程

1.步骤 无锁->偏向锁->轻量级锁->重量级锁 2.原因 第一步:无锁 现在有一个共享资源,还没有线程拥有它呢,所以也就不加锁,所以现在就是无锁状态 第二步:轻量级锁 这时候,来了一个线程A&#xf…

python备份库

个人简介 👨🏻‍💻个人主页:九黎aj 🏃🏻‍♂️幸福源自奋斗,平凡造就不凡 🌟如果文章对你有用,麻烦关注点赞收藏走一波,感谢支持! 🌱欢迎订阅我的…

【MIT 6.S081】2020, 实验记录(8),Lab: locks

目录 Task 1&#xff1a;Memory allocator (moderate)</font>Task 2&#xff1a;Buffer cache (hard)</font> Task 1&#xff1a;Memory allocator (moderate) 这个任务就是练习将一把大锁拆分为多个小锁&#xff0c;同时可以更加深入地理解 memory allocator 运行…

镭雕机:如何利用激光技术实现高质量的产品标记

镭雕机是一种利用激光技术实现高质量产品标记的设备。它通过激光束在各种不同的物质表面进行精确的打标&#xff0c;可以产生永久性的标记效果&#xff0c;这些标记不仅精美&#xff0c;而且具有高度的精度和清晰度。以下是镭雕机如何利用激光技术实现高质量产品标记的详细过程…

【LeetCode】84. 柱状图中最大的矩形(困难)——代码随想录算法训练营Day60

题目链接&#xff1a;84. 柱状图中最大的矩形 题目描述 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights [2,1,5,…

<Senior High School Math>: inequality question

( 1 ) . o m i t (1). omit (1).omit ( 2 ) . ( a 2 − b 2 ) ( x 2 a 2 − y 2 b 2 ) ( x 2 y 2 ) − ( a 2 y 2 b 2 b 2 x 2 a 2 ) ≤ x 2 y 2 − 2 x y ( x − y ) 2 (2). (a^2-b^2)(\frac{x^2}{a^2} - \frac{y^2}{b^2})(x^2y^2)-(\frac{a^2y^2}{b^2}\frac{b^2x^2}{a^…

指针的函数传参的详细讲解(超详细)

如果对指针基础知识已经有可以直接跳到 函数的指针传参与解引用&#xff0c;哪里不明白可以评论&#xff0c;随时解答。 目录 所以就有了一句话&#xff1a;指针就是地址&#xff0c;地址就是指针 对于指针在C语言中&#xff0c;指针类型就是数据类型&#xff0c;是给编译器…

第四百零二回

文章目录 知识回顾示例代码经验总结 我们在上一章回中介绍了MethodChannel的使用方法&#xff0c;本章回中将介绍EventChannel的使用方法.闲话休提&#xff0c;让我们一起Talk Flutter吧。 知识回顾 我们在前面章回中介绍了通道的概念和作用&#xff0c;并且提到了通道有不同的…

【C++ 学习】程序内存分布

文章目录 1. C 内存分布的引入 1. C 内存分布的引入 ① 栈又叫堆栈&#xff1a;非静态局部变量/函数参数/返回值等等&#xff0c;栈是向下增长的。 ② 内存映射段&#xff1a;是高效的I/O映射方式&#xff0c;用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存…

Day16 面向对象进阶——接Day15

Day16 面向对象进阶——接Day15 文章目录 Day16 面向对象进阶——接Day15一、抽象类及抽象方法二、接口三、多态四、对象转型五、内部类 一、抽象类及抽象方法 //抽象类 public abstract class 类名{//抽象方法public abstract void method(); }1、抽象方法交给非抽象的子类去…

Selenium 学习(0.20)——软件测试之单元测试

我又&#xff08;浪完&#xff09;回来了…… 很久没有学习了&#xff0c;今天忙完终于想起来学习了。没有学习的这段时间&#xff0c;主要是请了两个事假&#xff08;5工作日和10工作日&#xff09;放了个年假&#xff08;13天&#xff09;&#xff0c;然后就到现在了。 看了下…

Python 界面逻辑分离示例

本示例使用的发卡设备&#xff1a;https://item.taobao.com/item.htm?id615391857885&spma1z10.5-c.w4002-21818769070.11.6cc85700Robi3x 一、Python 安装PyQt5&#xff0c;运行 Qt Designer 新建窗体文件&#xff0c;在窗体中拖放控件 完成界面设计&#xff0c;保存为…

slowfast network

SlowFast Networks for Video Recognition_slowfast networks for video recognition 复现过程-CSDN博客https://blog.csdn.net/karen17/article/details/95936983?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171041325416800184121120%2522%252C%2522scm%2522%…

AJAX 04 回调函数地狱和 Promise 链式调用、async 和 await、事件循环

AJAX 学习 AJAX 04 进阶01 同步代码和异步代码02 回调函数地狱和 Promise 链式调用(1) 回调函数地狱(2) Promise 链式调用(3) Promise 链式应用 03 async 和 await(1) async 和 await 使用(2) async函数和await捕获错误 04 事件循环-EventLoop(1) 事件循环(2) 事件循环练习(3) …

八数码(C++)

原题在这里P1379 八数码难题 思路&#xff1a; 本题的思路很有意思&#xff0c;首先我们知道0是可以和上下左右交换位置的&#xff08;前提是不出边界&#xff09; 不难看出我们可以把这个二维数组给转化为一个相对应的字符串来表示当前的状态&#xff0c;每进行一次&#xff…

Siamese Network(孪生神经网络)详解

Siamese和Chinese有点像。Siam是古时候泰国的称呼&#xff0c;中文译作暹罗。Siamese也就是“暹罗”人或“泰国”人。Siamese在英语中是“孪生”、“连体”的意思&#xff0c;这是为什么呢&#xff1f;十九世纪泰国出生了一对连体婴儿&#xff0c;当时的医学技术无法使两人分离…
最新文章