IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构和算法——绪论 -> 正文阅读

[数据结构与算法]数据结构和算法——绪论

一、绪论

1.1 数据结构的研究内容

? ? ? ? 1、数据的各种逻辑结构和物理结构(存储结构),以及它们之间的相应关系

????????2、对每种结构定义相适应的各种运算

? ? ? ? 3、设计出相应的算法

? ? ? ? 4、分析算法的效率

1.2 基本概念和术语

1.2.1 数据、数据结构、数据项和数据对象

?举个例子说明:假设有两张表,上表为人员表,下表为课程表,表的格式如下:

姓名性别身高课程代号
小明180A
小红180? ? ? ?A
小绿180? ? ? ??????????B
课程代号课程名
A语文
B数学

这两张表就是数据

而单独的一张表就是数据对象, 即人员表和课程表都是一个数据对象,而每张表的每一行就是数据元素。而姓名、身高、课程代号、性别就是数据项,是最小的不可分割的最小单位。

1.2.2 数据结构

数据结构包括逻辑结构和物理结构(存储结构)两个层次。

数据结构是相互之间存在一种或者多种特定关系的数据元素的集合。

a、逻辑结构

逻辑结构是分为四种类型:集合结构、线性结构、树形结构、图结构

集合结构:数据元素同属一个集合,单个数据元素之间没有任何关系。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4zzJGWwu-1604820044558)(images/20201107113322490.png)]

?线性结构:类似于线性关系,线性结构中的数据元素之间是一对一的关系。

[转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xcX4kHLt-1604820044561)(images/20201107113349349.png)]

?树形结构:树形结构中数据元素之间存在一对多的关系。(各元素及元素关系所组成图形类似于树状图)。

[存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i1iwm9J6-1604820044565)(images/2020110711340070.png)]

?图形结构:数据元素之间是多对多的关系。如下图所示。

[(img-WetcYd94-1604820044567)(images/20201107113413856.png)]

?总结:逻辑结构是独立于计算机的,总体可以划分为线性结构和非线性结构,其中线性结构是指每个元素都有且仅有一个前驱和后继,而非线性结构是一个结点可能有多个直接前驱和多个直接后继。

b 存储结构(物理结构)

物理结构又叫存储结构,分为四种:顺序存储结构、链式存储结构、索引存储结构、散列存储结构,主要关注于前面两种存储结构。

(1)顺序存储结构

顺序存储结构就是把数据元素放到地址连续的存储单元里面,其数据间的逻辑关系和物理关系是一致的。之前学习的数组就是一种顺序存储结构,(如下图所示)

[转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Md4Jd1I6-1604820044569)(images/20201107113434453.png)]

(2)链式存储结构

链式存储结构:是把数据元素存放在任意的存储单元里面,这组存储单元可以是连续的也可以是不连续的。根据指针找出相邻元素的位置。

?在这里插入图片描述

?1.2.3 数据类型和抽象数据类型

a、数据类型

一般包括整型,实型、字符型等基本类型外、还有数组、结构体和指针等构造数据类型。

b、抽象数据类型(Abstract Data Type,ADT)

类似于C语言中的结构体和C++、Java中的类。

通俗的讲,抽象数据类型,泛指除基本数据类型以外的数据类型。

1.3 抽象数据类型的表示与实现

抽象数据类型的概念与面向对象的思想是一致的。

1.4 算法和算法分析

程序 = 数据结构 + 算法

1.4.1 算法的定义及特性、

算法是为了解决某类问题而规定的一个有限长的操作序列。

一个算法必须满足以下5个重要特性:有穷性、确定性、可行性、输入、输出、

1.4.2 评价算法优劣的基本标准

正确性、可读性、健壮性(鲁棒性)、高效性

1.4.3 算法的时间复杂度

详细可看这个:(5条消息) 一套图 搞懂“时间复杂度”_12 26 25的博客-CSDN博客_时间复杂度

看以下代码的时间复杂度:

\转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ozjmldFC-1604820044571)(images/20201107113605227.png)]

?最好、最坏和平均时间复杂度

1.最好时间复杂度:指的是算法计算量可能达到的最小值

2.最坏时间复杂度:指的是算法计算量可能达到的最大值。

3.平均时间复杂度:是指算法在所有可能情况下,按照输入实例以等概率出现时,算法计算量的加权平均值

1.4.4 算法的空间复杂度

空间复杂度只需要分析辅助变量所占的额外空间。一个算法的空间包括算法本身占用的空间以及辅助空间。

空间复杂度:S(n)= O(f(n))

如果算法执行所需要的临时空间不随着某个变量n的大小而变化,即此算法空间复杂度为一个常量,可表示为O(1)

举个例子

int i = 1;
int j = 1;
++i;
++j;
int m = i+j;

代码中的i,j,m所分配的空间不能随着处理数据量的变化,因此它的空间复杂度S(n) = O(1)

我们再看一个代码:

int []m = new int[n];
    for (i = 1; i <= n; ++i) {
        j = i;
        j++;
    }

这段代码中,第一行new了一个数组出来,这个数据占用的大小为n,这段代码的2-5行,虽然有循环,但没有再分配新的空间,因此,这段代码的空间复杂度主要看第一行即可,即 S(n) = O(n)

第一章 总结

[片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sj3ANZIY-1604820044572)(images/20201107123513793.jpg)]

数据、数据对象和数据元素、数据项的关系如下

[转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JbbYJOEX-1604820044573)(images/20201107113623372.png)]?

数据结构是相互之间存在一种或者多种特定关系的数据元素的集合,同样是结构,从不同角度来讨论,会有不同的分类,如下图所示

[失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A2q352GF-1604820044574)(images/20201107113637948.png)]?

算法是为了解决某类问题而规定的一个有限长的操作序列。

算法具有五个特性:有穷性、确定性、可行性、输入和输出

算法分析的重点方面是分析算法的时间复杂度和空间复杂度。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:36:44  更:2022-09-04 01:40:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 17:28:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码