1-数据结构和算法简介

一、数据结构

数据结构是讨论计算机系统中 数据的组织形式 及其相互关系。 数据:客观事物采用计算机进行识别、存储和加工所进行的描述 结构:事物间的相互关系和约束 数据结构的基本单元是数据元素

数据结构的3个层次:①数据的逻辑机构; ②数据的存储结构; ③数据的运算( 操作集合)

①逻辑结构:

●线性结构:有且仅有一个开始元素和终点元素,且所有数据元素最多只有一个直接前趋和一个直接后继。 比如 线性表 ●非线性结构: 一个元素可能有多个直接前趋和多个直接后继。 比如 树结构 图结构

②存储结构:

反应数据元素在计算机中的存储方案 顺序存储、链接存储、索引存储、散列存储

③操作集合:

遍历:在数据结构的各个元素中移动,或查看所有元素 插入:往数据结构中 添加新的元素 更新:修改 或 替换数据结构中的 一个或多个元素 删除: 把指定的数据结构元素移除 查找:在数据结构中找寻满足一定条件的数据元素 排序:在保持数据结构中元素个数不变的前提条件下,把元素按照指定的顺序重新排列,排序一般是针对线性逻辑结构。

二、算法

指为解决特定问题 的 有穷操作规则 的集合。 算法的5个基本特性: ①有穷性:有始有终; ②确定性:算法操作的每一步,其顺序和内容都必须唯一确定; ③数据输入 ④数据输出:一个算法至少有一个已获得的 有效信息输出。 ⑤可行性:任一步操作都是可以付诸实践的。

算法点的效率 可分为 时间效率 和空间效率。 引入 时间复杂度 和空间复杂度的概念: ●空间复杂度

除开存储数据结构本身外(比如指令、常数、变量 和输入数据),实现算法所需要的额外辅助空间有多少。 S(n)=O [ f(n) ] ●时间复杂度

一般情况下,算法中 基本操作的重复执行次数问题规模n的某个函数f(n).

定性地描述了算法运行的时间。 T(n) = O[f(n)] , 不考虑这个函数的 首项系数 和 低阶项。 相同规模的不同输入,仍可能导致算法的运行时间不同。一般使用算法最坏情况下的的复杂度来做代表。 时间复杂度可以用T(n)的自然特性加以区分,如: 常量时间O(1) 线性时间O(n) 指数时间O(n^2) 对数时间O(logn) O(1) < O( logN) <O( logN^2) < O(N) < O(N*logN) < O(N^2) < O(N^3)< ...<O(N^k) < O( 2^N) < O(3^N) < ... O(k^N) < O(N!)

常量时间:它表示某个算法求出解答的时间在固定范围内,而不依照问题输入数据规模变化

比如:访问数组元素所需的时间为常量时间

程序= 算法 + 数据结构

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员的知识天地

Python学习教程:Python增强赋值及共享引用注意事项

Python中的增强赋值是从C语言中借鉴出来的,所以这些格式的用法大多和C一致,本身就是对表达式的简写,即二元表达式和赋值语句的结合,比如a += b 和a =...

9720
来自专栏菲宇

Docker监控——Cadvisor+InfluxDB+Grafana搭建

对于一个物理机上运行多个容器应用时,容器的运行情况如:CPU使用率、内存使用率、网络状态、磁盘空间等信息,都是需要去了解的,因此监控是必须的。对于容器的监控方案...

18530
来自专栏资深Tester

真的有必要写测试用例么?

最近王豆豆又恢复了以前的勤快了,这已经是一周内的第三篇,值得夸奖(自夸下),王豆豆一直很佛系的运营这个公众号,也许并不能说是运营,只是觉得有一个地方能写字挺好,...

35130
来自专栏Golang开发

golang-101-hacks(13)——二维切片

注:本文是对golang-101-hacks中文翻译。 Go支持多维切片,再此只对二维切片切片做介绍。日常生活中通常会使用到二维切片,而多维似乎并不多见。如果...

16840
来自专栏程序员的知识天地

11道面试中不常见却一定会问到Python题解析

我们知道网上有非常多面试题的解析,但是其中往往是前几年的老题了。 为了帮助小伙伴们能够在Python工作面试中脱颖而出,再此特别奉上2019年11道最新Pyth...

8420
来自专栏数值分析与有限元编程

高斯消去法的算法改进

其中括号内的数字表示对该行处理的次数,比如第三列,该列中的第一个元素没有变化,第二个元素处理了一次,第三个元素处理了两次,处理的过程为

15420
来自专栏秃头哥编程

Redis常用技术----事务

Redis的事务是使用MULTI-EXEC的命令组合,使用它可以提供两个重要的保证:

13320
来自专栏Android 开发者

提示[译] Data Binding 库使用的经验教训

Data Binding 库(下文中以『DB 库』词语来指代)提供了一个灵活强大的方式来绑定数据到 UI 界面。但是要用一句陈词滥调:『能力越大,责任越大』,仅...

11620
来自专栏沉默王二

教妹学 Java:难以驾驭的多线程

“二哥,上一篇《集合》的反响效果怎么样啊?”三妹对她提议的《教妹学 Java》专栏很关心。

11020
来自专栏菲宇

Docker 标准化开发测试和生产环境

对于大部分企业来说,搭建 PaaS 既没有那个精力,也没那个必要,用 Docker 做个人的 sandbox 用处又小了点。

14620

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励