6:算法基础--6.1:线性结构 ,6.2:查找算法

news2024/11/19 20:32:14

转上一节:

http://t.csdnimg.cn/ql5Cdicon-default.png?t=N7T8http://t.csdnimg.cn/ql5Cd

课程内容提要:

6:知识点考点详解  

6.1:线性结构 

        通常分析时间复杂度的方法是从算法中选取-种对于所研究的问题来说是基本运算的操作,以

该操作重复执行的次数作为算法的时间度量。一般来说, 算法中原操作重复执行的次数是规模n的

某个函数T(n)。

        空间复杂度是指对一个算法在运行过程中临时占用存储空间大小的度量。一个算法的空间复

杂度只考虑在运行过程中为局部变量分配的存储空间的大小。

思考:求1+2+... +100的哪个算法更快?占用空间更少?

算法1:inti= (1+100)*100/2。只要运算1次。需要1个变量。

算法2: for循环执行100次。要运算n次。需要多个变量。

由于许多情况下要精确计算T(n)是困难的,因此引入了渐进时间复杂度在数量上估计一个算法的执

行时间。其定义如下:

如果存在两个常数c和m,对于所有的n,当n≥m时有f(n)≤Cg(n), 则有f(n)=O(g(n))。 也就是说,随着n

的增大, f(n)渐进地不大于g(n)。例如:一个程序的实际执行时间为T(n)=3n^{2}+2n^{2}+n,求其渐

进时间复杂度。随着n不断增加,2n^{2}+n的影响很小。时间主要由n^{3}决定,则T(n)的渐进时间复杂

度就是O(n^{3}),把常量值去掉。

常见的对算法执行所需

时间的度量:

O(1)<O(log_{2}n)< O(n)< O(nlog_{2}n)< O(n^{2})< O(n^{3})< O(2^{n})< O(n!)
技巧:把n=10代入即可。

(1)常数级时间复杂度0(1)

1)单个语句

如: K=0;

2)整个程序都没有循环语句,或复杂函数的调用

(2)时间复杂度O(n)

(3)时间复杂度O(n2) 

思考: O (n^{3}) ?依此类推

(4)时复杂度O(log_{2}n)

(5)时间复杂度O(nlog_{2}n)

典型代表:堆排序,每次重建堆的时间复杂度是log2n, n个元基本上就是nlog2n.

(6)时间复杂度O(2^{n})

典型代表:判断是否包含指定子序列,LCS最长公共子序列、钢管切割问题,动态规划法自顶向  

下,时间复杂度为O(2^{n})。

6.2:查找算法

考点1:顺序查找

顺序查找的思想:将待查找的关键字为key的元素从头到尾与表中元素进行比较,如果中间存在关健

字为key的元素,.则返回查找成功;否则,返回查找失败。

查找成功时,顺序查找的平均查找长度为(等概率情况下) :

考点2:二分查找

二分法查找的基本思想是:R[Iow,......,high]是当前的查找区)

(1)确定该区间的中点位置:mid=[(low+high)/2];

(2)将待查的k值与R[mid].key比较,若相等,则查找成功并返回此位置,否则需确定新的查找区

间,继续二分查找,具体方法如下:

若R[mid].key > k,则由表的有序性可知R[mid,…,n].key均大于k,因此若表中存在关键字等于k的

结点,则该结点必定是在位置mid左边的子表R[low,…,mid-1]中。因此,新的查找区间是左子表

R[low,…,high],其中high=mid-1。

若R[mid].key<k,则要查找的k必在mid的右子表R[mid+1,…,high]中,即新的查找区间是右子表

R[low,…,high],其中low=mid+1。

若R[mid].key=k,则查找成功,算法结束。

(3)下一次查找是针对新的查找区间进行,重复步骤(1) 和(2)。

(4)在查找过程中,low逐步增加,而high逐步减少。如果high<low, 则查找失败,算法结束。

【示例】请给出在含有12个元素的有序表{1,4,10,16,17,18,23,29,33,40,50,51}中二分查找关健

字17的过程。

折半查找在查找成功时关键字的比较次数最多为log_{2}n+1次。

折半查找的时间复杂度为O(log_{2}n)次。

折半查找的前提:有序、顺序存储。

考点3:哈希表查找

1.散列表

散列表查找的基本思想是:已知关键字集合U,最大关键字为m,设计一个函数Hash,它以关健

字为自变量,关键字的存储地址为因变量,将关键字映射到一个有限的、地址连续的区间T[0...n-1]

(n<<m)中,这个区间就称为散列表,散列查找中使用的转换函数称为散列函数。

例:记录关键码为(3,8, 12, 17. 9) ,取m=10 (存储空间为1) ,p=5, 散列函数h=key%p。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从多模态生物图数据中学习Gene的编码-MuSeGNN

由于数据的异质性&#xff0c;在不同的生物医学背景下发现具有相似功能的基因对基因表示学习提出了重大挑战。在本研究中&#xff0c;作者通过引入一种称为多模态相似性学习图神经网络的新模型来解决这个问题&#xff0c;该模型结合了多模态机器学习和深度图神经网络&#xff0…

2012年认证杯SPSSPRO杯数学建模C题(第二阶段)碎片化趋势下的奥运会商业模式全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 C题 碎片化趋势下的奥运会商业模式 原题再现&#xff1a; 从 1984 年的美国洛杉矶奥运会开始&#xff0c;奥运会就不在成为一个“非卖品”&#xff0c;它在向观众诠释更高更快更强的体育精神的同时&#xff0c;也在攫取着巨大的商业价值&#…

(React组件基础)前端八股文修炼Day6

一 类组件与函数组件有什么异同 在React中&#xff0c;类组件和函数组件是创建组件的两种主要方式。随着React的发展&#xff0c;尤其是自Hooks在React 16.8中引入以来&#xff0c;函数组件的功能变得更加强大&#xff0c;使得它们能够更加方便地与类组件相竞争。下面是类组件…

打造专业运营团队,武汉星起航引领全球跨境电商未来趋势

近年来&#xff0c;随着全球经济的不断发展&#xff0c;跨境电商作为国际贸易的一种新模式&#xff0c;已然成为推动全球经济增长的新引擎。在这个浩荡的潮流中&#xff0c;武汉星起航以亚马逊自营店铺为依托&#xff0c;凭借丰富的实战运营经验和专业的团队&#xff0c;正积极…

蓝桥杯-dfs搜索模板题(一)

蓝桥杯-dfs搜索模板题&#xff08;一&#xff09; P2089 烤鸡P1088 火星人P1149 火柴棒等式P2036 PERKETP1135 奇怪的电梯结语 P2089 烤鸡 对于每个位置枚举数字 #include<bits/stdc.h>using namespace std;const int N1010;int n;int arr[N];//临时方案 int res0;//方案…

雪球acw_sc__v2 加密参数构造解析

打开雪球网站:https://xueqiu.com/today 首先打开Edge浏览器,清除应用程序里面的cookie 接着,跳转到源代码,刷新网页,进行调试,首先进入debugger模式,需要反debug调试。 输入相关代码,解除subug模式 点击保留日志,这里显示有两次请求,分别分析下。 第一个today返…

回归(maskrcnn)

一、写在前面 虽然粉丝量很少 但是这是一个很好的平台 记录自己的历程 我看了一个很好的讲解视频 我记录一下操作过程4-maskrcnn源码修改方法哔哩哔哩bilibili 作者已经注销帐号了 但内容很好 二、maskrcnn介绍 Mask R-CNN&#xff08;Mask Region-based Convolutional Neur…

经济学 博弈论 行为经济学

四种市场结构&#xff1a; 划分依据&#xff1a;生产者的数量&#xff0c;对价格的控制力&#xff0c;进入市场的难度&#xff08;新的商家进入市场的困难难度&#xff09; 1.完全竞争市场&#xff08;大多数农业产品&#xff1a;草莓&#xff09; 个体商家对价格没有控制力&a…

短视频素材在哪里找?八大平台解决你的创作需求

大家好&#xff01;在短视频创作的过程中&#xff0c;寻找优质的素材网站是非常重要的。那么&#xff0c;短视频素材在哪里找呢&#xff1f;推荐八个主流的视频素材分享网站&#xff0c;话不多说直接上干货。 蛙学网&#xff08;waxue.com&#xff09;——中国 首先要推荐的是…

Mybatis——鉴别器映射

鉴别器映射 有时一个单独的数据库查询会返回很多种不同数据类型的结果集。 discriminator鉴别器元素可以用来处理这种情况 数据库表结构 创建实体类、映射接口和映射文件 实体类employee package org.example.demo2;import lombok.Data;Data public class Employee {priv…

好菜每回味道不同--建造者模式

1.1 炒菜没放盐 中餐&#xff0c;老板需要每次炒菜&#xff0c;每次炒出来的味道都有可能不同。麦当劳、肯德基这些不过百年的洋快餐却能在有千年饮食文化的中国发展的那么好呢&#xff1f;是因为你不管何时何地在哪里吃味道都一样&#xff0c;而鱼香肉丝在我们中餐却可以吃出上…

C语言数据结构专题--顺序表(1基础)

前言 我们在对C语言有一定的了解之后&#xff0c;我们就可以开始数据结构的学习了&#xff0c;数据结构多用指针、结构体、动态内存开辟等知识&#xff0c;若对这些知识还不太了解的朋友&#xff0c;就需要加深其理解了&#xff0c;那么废话不多说&#xff0c;我们正式开始本节…

【C++学习】哈希的应用—位图与布隆过滤器

目录 1.位图1.1位图的概念1.2位图的实现3.位图的应用 2.布隆过滤器2.1 布隆过滤器提出2.2布隆过滤器概念2.3如何选择哈希函数个数和布隆过滤器长度2.4布隆过滤器的实现2.4.1布隆过滤器插入操作2.4.2布隆过滤器查找操作2.4.3 布隆过滤器删除 2.5 布隆过滤器优点2.6布隆过滤器缺陷…

小程序实现微信 【我的】界面

小程序实现仿微信 【我的】界面 一、简介 小程序实现仿微信 【我的】界面 采用 uni-app 实现&#xff0c;可以适用微信小程序、其他各种小程序以及 APP、Web等多个平台 具体实现步骤如下&#xff1a; 下载开发者工具 HbuilderX进入 【Dcloud 插件市场】 搜索 【小程序实现…

HTML基础知识详解(上)(如何想知道html的全部基础知识点,那么只看这一篇就足够了!)

前言&#xff1a;在学习前端基础时&#xff0c;必不可少的就是三大件&#xff08;html、css、javascript &#xff09;&#xff0c;而HTML&#xff08;超文本标记语言——HyperText Markup Language&#xff09;是构成 Web 世界的一砖一瓦&#xff0c;它定义了网页内容的含义和…

SwiftUI 中无法对添加模糊(blur)效果视图截图的初步解决

概览 在 万物皆可截图:SwiftUI 中任意视图(包括List和ScrollView)截图的通用实现 这篇博文里,我们讨论了在 SwiftUI 中对任意视图截图的一般方法。 不过,经码友反应这些方法对添加模糊(blur)效果的视图好像不太灵了。这里,就让我们看看一些可能的应变(Workaround)之…

Vue3:组件间通信-各种通信方式的用法总结

Vue3组件通信和Vue2的区别&#xff1a; 移出事件总线&#xff0c;使用mitt代替。vuex换成了pinia。把.sync优化到了v-model里面了。把$listeners所有的东西&#xff0c;合并到$attrs中了。$children被砍掉了。

用顺序表实现通讯录

前言 这次的通讯录是基于上一篇的动态顺序表的基础上实现的&#xff0c;如果对动态顺序表不熟悉&#xff0c;可以打开这个链接阅读http://t.csdnimg.cn/9zJ5g&#xff0c;这里我们会调用动态顺序表的函数。 如果想看静态顺序表实现通讯录&#xff0c;可以打开这个链接阅读http:…

【Canvas与艺术】绘制蓝色波纹铜质Best Product Guaranteed徽章

【关键点】 使用贝塞尔二次曲线生成环状波纹轮廓。 【成果图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>蓝色波纹铜质…

离线数仓(十)【ADS 层开发】

前言 剩下的 ADS 层主要就是写 SQL 了&#xff0c;就像我们之前练习的 HQL 题一样&#xff0c;不同的是这里的数据从哪张表读取&#xff08;DWD 还是 ADS 甚至个别表需要从 DIM 层读取&#xff09;需要我们自己来分析。 ADS 的建表语句和 MySQL 是对应的&#xff0c;我们到时候…