01 - 数据结构和算法的认识

数据结构和算法学习汇总

了解数据结构和算法的一些基本概念,主要掌握时间复杂度的计算

1、数据结构

1.1 定义

数据结构是指所有数据元素以及数据元素之间的关系,可以看做是相互之间存在着某种特定关系的数据元素的集合,即可以把数据结构看成是带结构的数据元素的集合

1.2 包括

  1. 数据元素之间的逻辑关系
    1. 即数据的逻辑结构
    2. 它是数据结构在用户面前呈现的形式
  2. 数据元素及其在计算机存储器中的存储方式
    1. 即数据的存储结构
    2. 也称为数据的物理结构
  3. 施加在数据上的操作(即数据的运算)

1.3 逻辑结构

1.3.1 介绍

数据的逻辑结构是从逻辑关系上描述数据的,常常将数据的逻辑结构简称为数据结构。

1.3.2 类型

集合:

  • 集合中的所有元素除了同属于一个集合外,别无其他关系
    线性结构:
  • 该结构中的节点之间存在一对一的关系。
  • 其特点是开始节点和终端节点都是唯一的,除了开始节点和终端节点以外,其余节点都有且仅有一个前驱,有且仅有一个后继
  • 线性表就是一种典型的线性结构

树形结构:

  • 该结构中的节点之间存在一对多的关系
  • 其特点是每个节点最多只有一个前驱,但可以有多个后继,切终端节点可以有多个
  • 比如二叉树就是典型的树结构

图形结构:

  • 该结构中的节点之间存在多对多的关系
  • 其特点是每个节点的前驱和后继的个数都可以是任意的
  • 因此图形结构可能没有开始节点 和终端节点,也可能有多个

1.3.3 注意

  • 树形结构和图形结构统称为非线性结构,存在一对多或多对多关系。
  • 线性结构是树形结构的特殊情况,树形结构是图形结构的特殊情况

1.4 逻辑结构

1.4.1 介绍

逻辑结构在计算机中的存储方式。依赖于计算机语言

1.4.2 类型

顺序存储结构:

  • 该结构是把逻辑上相邻的节点存储在物理上相邻的存储单元里
  • 节点之间的逻辑关系由存储单元的邻接关系来体现
  • 优点是节省存储空间,便于查询,但是不便于增删

链式存储结构:

  • 该结构不要求相邻的节点在物理上也相邻,起节点间的逻辑关系是由附加的指针字段来表示的
  • 通常要借助指针类型来描述
  • 因为数据的存储单元会有一部分用来存储节点之间的逻辑关系,所以浪费内存。
  • 便于增删,但是不便于查询

索引存储结构:

  • 需要建立附加的索引表
  • 索引表存储有关键字和地址,地址就是指向节点的指针
  • 可以高效的进行增删改查,只是会浪费一些内存用来建立索引表

散列(哈希)存储结构:

  • 哈希结构是根据节点的关键字通过哈希函数直接计算出一个地址值,将其作为节点存储的位置
  • 优点是查找速度快
  • 哈希存储方式只存储节点的数据,不存储节点之间的逻辑关系。逻辑关系也不是靠物理地址判断的,而是通过节点的关键字进行哈希计算得到的
  • 进行快速查找和插入的场合适合使用哈希存储结构

1.5 数据类型

数据类型是一组性质相同的值的集合和定义在此集合上的一组操作的总称,数据类型是数据结构在计算机的具体体现。

注意:

  • 对于一种数据结构,逻辑结构总是唯一的,但是他可能对应多种存储结构,并且在不同的存储结构中,统一运算的实现过程可能不同
  • 针对数据的不同运算,为了适应运算的效率,采用了不同的存储结构

2、算法

算法是对特定问题求解步骤的一种描述

特性: 有穷性、确定性、可行性、有输入、有输出

2.1 介绍

算法设计好后,还需要分析算法的优劣,从两方面考虑

  • 时间维度:执行当前算法所消耗的时间
  • 空间维度:执行当前算法需要占用的内存空间

2.2 算法设计的目标

  • 正确性:能够正确执行
  • 可使用性:可方便使用
  • 可读性:易于理解
  • 健壮性:具有很好的容错性
  • 高效率和低存储量需求:1)通常算法的效率主要指算法的执行时间;2)算法存储量指的是算法执行过程中所需的最大存储空间

2.3 时间复杂度

一个算法由控制结构和原操作构成,算法的运算时间取决于两者的综合效果,算法执行时间大致为基本运算时所需时间与运行次数的乘积。因此一个算法的执行效率可以由其最基本的运算的执行次数来衡量。

2.3.1 计算方式

计算公式: T(n)=O(f(n))

说明:

  • 记号O读作大O
  • 算法执行次数T(n)是问题规模n的某个函数f(n)
  • 他表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同

注意: O 的作用在于只求出T(n)的最高阶项,忽略低阶项和常数

2.3.2 常见时间复杂度

O(1)
没有进行循环的算法中,基本运算次数与问题规模无关,所以是常数

O(1).png

对数阶 O(log2n)
次数为x,而2的x次方等于n,那么就是对数阶

O(log2n).png

线性阶 O(n)
只有一层循环

O(n).png

平方阶 O(n^2)

  • 可以看出只要有两层循环,不管第二层从几开始,都是n^2
  • 因为加入第一层是(n-3),第二层执行了(n-6),这样也是n^2
O(n^2).png

立方阶 O(n^3)
三层循环,肯定就是n^3了

O(n^3).png

排序:
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) <O(2^n) < O(n!) < O(n^n)

2.3.3 期望时间复杂度

也叫加权平均时间复杂度,将执行的概率也加入计算。

2.3.3 均摊时间复杂度

是一种特殊的加权平均时间复杂度,把耗时多的操作分摊到耗时低的操作。


均摊时间复杂度.png

这个时间复杂度 其实是O(1),而不是O(n)

2.4 空间复杂度

算法空间复杂度是指计算算法所需的存储空间, 其计算公式为S(n) = n(f(n))
所以在考察算法的空间复杂度,主要考虑算法执行所需要的临时占用的存储空间大小的量度。

数组逆序,将一维v1.43数组a中的n个数逆序存放在原数组中.

复杂度计算:

空间复杂度计算.png

说明:

  • 通过临时变量来做中间的交换:所需辅助空间为临时变量temp的空间,为O(1)
  • 先倒序存入一个数组b,在从b中依序存入a:所需的辅助空间 为 O(n)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容