算法笔记(持续更新)
目录
- 一.数据结构概念
- 二.算法概念
- 三.线性表
一.数据结构概念
逻辑结构
集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系
线性结构:线性结构中的数据元素之间是一对一的关系
树型结构:树形结构中的数据元素之间存在一种一对多的层次关系
图形结构:图形结构的数据元素是多对多的关系
物理结构(存储结构):数据的逻辑结构在计算机中的存储形式
顺序存储结构:把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的
链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的
二.算法概念
- 算法特性
- 输入:算法具有零个或多个输入
- 输出:算法至少有一个或多个输出
- 有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成
- 确定性:算法的每一步骤都具有确定的含义,不会出现二义性
- 可行性 :算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成
- 算法设计的要求
- 正确性
- 可读性
- 健壮性
- 时间效率高
- 存储量低
- 算法效率
- 判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数
- 算法时间复杂度
- 时间复杂度
- 时间复杂度
- 最坏时间复杂度
- 通常,除非特别指定,我们提到的运行时间都是最坏情况的运行
时间
- 通常,除非特别指定,我们提到的运行时间都是最坏情况的运行
- 算法空间复杂度
- 算法的空间复杂度通过计算算法所需的存储空间实现,算法空间复杂度的计算公式记作∶S(n)= O(f(n)),其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数。
三.线性表
- 线性表抽象数据类型的定义
- 线性表顺序存储结构
- 定义:线性表的顺序存储结构,指的是用一段地址连续的存储单元依次
存储线性表的数据元素。 - 长度
- 线性表的长度是线性表中数据元素的个数
- 线性表顺序存储结构优缺点
- 优点:
- 无需为表示表中元素之间的逻辑关系而增加额外的存储空间
- 可以快速地存取表中任意位置地元素O(1)
- 缺点:
- 插入和删除操作需要移动大量元素O(n)
- 当线性表长度变化较大时,难以确定存储空间的容量
- 造成存储空间中的“碎片”
- 代码(待更新)
- 优点:
- 定义:线性表的顺序存储结构,指的是用一段地址连续的存储单元依次
- 线性表链式存储结构
定义:为了表示每个数据元素 ai与其直接后继数据元素 a1 之间的逻辑关系,对数据元素 ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。指针域中存储的信息称做指针或链。这两部分信息组成数据元素 ai的存储映像,称为结点(Node);n个结点(a;的存储映像)链结成一个链表,即为线性表(a1,a2,…,an)的链式存储结构,因为此链表的每个结点中只包含一个指针域,所以叫做单链表。
概念
- 结点由存放数据元素的数据域和存放后继结点地址的指针域组成
- 头指针
- 链表中第一个结点的存储位置(如果存在头结点,则头指针指向头节点存储位置)
- 头结点(一个辅助结点,不算真正的结点)
- 在单链表的第一个结点前附设一个结点,称为头结点。
- 头结点的数据域不存储信息
- 头节点的指针域指向第一个结点的指针
- 头节点和头指针关系
- 单链表结构与顺序存储结构优缺点
算法笔记(持续更新)相关推荐
- 重拾CCNA,学习笔记持续更新ing......(4)
重拾CCNA,学习笔记持续更新ing......(4) 路由器作用功能的经典解说(笑)(非原创) 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大 ...
- IRS中波束赋形设计源代码之AO算法学习(持续更新,多多交流)
IRS中波束赋形设计源代码之AO算法学习(持续更新,多多交流) 论文:Weighted Sum-Rate Maximization for Reconfigurable Intelligent Sur ...
- Admin.NET管理系统(vue3等前后端分离)学习笔记--持续更新
我的学习笔记 - 9iAdmin.NET 欢迎学习交流 (一)前端笔记 1.1 关于.env的设置 1.2 关于路由模式问题 1.3 关于 vue.config.ts 1.4 关于 打包(pnpm r ...
- JS逆向学习笔记 - 持续更新中
JS逆向学习笔记 寻找深圳爬虫工作,微信:cjh-18888 文章目录 JS逆向学习笔记 一. JS Hook 1. JS HOOK 原理和作用 原理:替换原来的方法. (好像写了句废话) 作用: 可 ...
- CSS(3)学习笔记——持续更新
本篇皆是本人长期记录并整理出来的笔记,如有记录得不对的地方,欢迎探讨.记录的很少,将不断学习不断补充. 1 选择器 CSS(3)中提供的选择器手册(w3school):http://www.w3sch ...
- 最全Linux系统学习笔记--持续更新
1.shell语法 命令 选项 参数 命令:整条shell命令的主体 选项:会影响会微调整个命令的行为 参数:命令作用的对象 1.自动补全 2.快捷键 ctrl+C:终止前台运行的程序 ctrl+D: ...
- 目标跟踪经典算法汇总(持续更新...)
如题,虽然这个问题是经典目标跟踪算法,但事实上,可能我们并不需要那些曾经辉煌但已被拍在沙滩上的tracker(目标跟踪算法),而是那些即将成为经典的,或者就目前来说最好用.速度和性能都看的过去trac ...
- 0.linux笔记.....持续更新...
0.0. VScode几点基本用法 0.1. 将UbuntuLauncher启动器移动到底部 0.2. 一个窗口中运行多个终端方法 1.Markdown的用法 2.source 用法 3.安装软件 4 ...
- MySQL笔记(持续更新)
文章目录 一.MySQL 1.简介 2.数据库的概念 3. DOS指令: 4.数据库的基本操作 4.1.查看数据库: 4.2.删除数据库: 4.3.选择数据库: 4.4.创建数据库 4.5.查看数 ...
- typescript-----javascript的超集,typescript学习笔记持续更新中......
Typescript,冲! Typescript 不是一门全新的语言,Typescript是 JavaScript 的超集,它对 JavaScript进行了一些规范和补充.使代码更加严谨. 一个特别好 ...
最新文章
- 【工具软件】webstorm如何使用快捷键生成固定代码
- cortex m3 gcc项目_广东省住建厅党组书记赵坤到公司陆丰市污水PPP项目实地调研...
- 红黑树的原理_红黑树插入算法实现原理分析
- 策略模式(stragegy)
- 怎么导出插件_不会插画没关系,插件帮你快速搞定
- SDOI2016 生成魔咒
- android: 调用摄像头拍照
- mr图像翻转的原因_MRI图像常见问题及对策
- Problem D: 顺序串的基本运算
- eclipse 4.3 汉化
- MonkeyRunner_API
- mysql排序同值排名一致
- seafile看不见repo报500错误的解决方法
- matlab解方程 中det,matlab中det函数
- 惊艳的成长计划表刷屏!武大首位 94 年博士入职华为,年薪达 201 万
- 微信如何推送html文件,微信推送怎么附上文件_怎样在微信公众号上传附件图文步骤...
- JS this指向练习题
- 计算机打字速度在线测试,在线测试打字速度(一分钟打字速度测试)
- 基于matlab的排队系统仿真
- 瑞红淘宝商城旗舰店开张 正式进军B2C市场
热门文章
- C# 转换图片的大小
- 解决element UI 表格el-table增加列会震动抖动的问题
- c语言程序设计学生管理系统结构图,c语言程序设计学生管理系统.doc
- 假如你的入职薪水为10k,每年涨幅入职薪水的5%,50年后你的工资是多少?
- Matlab仿真 点电荷电场分布分析
- 现在不起眼的小IT公司值得去吗?我分享自己的亲身经历
- 走进小程序【一】什么是小程序?
- 产业联盟提高企业核心竞争力
- Android开发实用小技巧六——根据网址跳转第三方浏览器
- VMware Workstation 和 Device/Credential Guard 不兼容