数据结构与算法的概念

简介: 大家好,我是王有志。今天是非常简单的两部分内容:数据结构和算法的概念,以及数据的物理存储结构。

大家好,我是王有志,欢迎和我聊技术,聊漂泊在外的生活。快来加入我们的Java提桶跑路群:共同富裕的Java人

今天是非常简单的两部分内容:

  • 数据结构和算法的概念

  • 数据的物理存储结构

数据结构和算法是什么?

我们先来看数据结构的定义:

在计算机科学中,数据结构(英语:data structure)是计算机中存储、组织数据的方式。

通常意义上,我们所说的数据结构指的是组织数据的方式,是逻辑关系,并且对大部分数据结构来说,数据的逻辑组织形式和物理存储结构是大相径庭的。接着我们来看算法的定义:

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。

从定义中,我们可以看到,算法是解决问题的清晰指令。再来补充下邓俊峰老师的解释:

所谓算法,是指基于特定的计算模型,旨在解决某一信息处理问题而设计的一个指令序列。

邓俊峰老师指出了很重要的一点,算法是基于特定计算模型的,而这个特定计算模型就是我们所说的数据结构。结合以上的解释,我们不难得出以下结论:

数据结构是数据的逻辑组织形式,算法是作用在特定数据结构上,用于解决问题的准确完整的程序指令。

物理存储结构

这部分知识涉及到《计算机组成原理》的内容,因此只做一个简单的说明,方便理解后面的内容。

内存地址

内存地址是为了定位内存中的数据而给每块内存分配的编号,使用十六进制数字表示,如:0xf0000000。在计算机中,容量以字节为基本单位,每个字节都有自己的地址编号,每4个字节的内存空间为一个单元。

实际上,内存地址可以分为:逻辑地址线性地址物理地址。不过在数据结构和算法的内容中,我们统一看做是内存地址就好了。

物理存储结构

假设有一块20个内存单元的空闲内存空间:

图1:空闲内存.png

此时我们为数组分配5个内存单元(因为数组的特殊性,需要每个内存空间连续):

图2:连续分配内存.png

因为内存空间充足,很容易就分配了5个地址连续的内存单元给数组,我们把逻辑上相连,且物理位置上相连的存储方式称为顺序存储结构

如果内存已经被使用过了呢?

图3:使用过的内存.png

虽然剩余了9个内存空间,但因内存空间物理位置上不连续,所以无法在这块内存上分配数组。那么这块内存就要“浪费掉”吗?

克里夫肖(Cliff Shaw)和赫伯特西蒙(Herbert Simon)想到了一种“链式”的方式,来达到逻辑上“连续”。

图4:链式分配内存.png

可以将5个空闲的内存空间“串”起来,这种逻辑上相连,物理位置上不相连的存储方式称为链式存储结构

结语

今天的内容到这里就结束了,我们来回顾下都聊了哪些内容:

简单的了解了数据结构和算法的概念,需要再次说明的是,通常我们说到数据结构,指的是数据逻辑上的组织形式,最后了解了数据在内存上的物理存储形式,实际上我们之后所见到的数据结构,主要是链式存储结构


好了,今天就到这里了,Bye~~

目录
相关文章
|
11天前
|
存储 算法
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
这篇文章详细介绍了图的概念、表示方式以及深度优先遍历和广度优先遍历的算法实现。
26 1
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
|
14天前
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
34 1
|
19天前
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现(三)
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现
|
19天前
|
存储
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现(二)
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现
|
19天前
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现(一)
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现
|
4月前
|
存储 算法 Linux
【数据结构和算法】---二叉树(1)--树概念及结构
【数据结构和算法】---二叉树(1)--树概念及结构
45 0
|
13天前
|
存储 分布式计算 算法
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
28 0
|
2月前
|
存储
【初阶数据结构篇】二叉树基础概念
有⼀个特殊的结点,称为根结点,根结点没有前驱结点。
40 1
|
3月前
|
存储
【数据结构】树和二叉树的概念及结构
数据结构——树和二叉树的概念及结构
69 3
【数据结构】树和二叉树的概念及结构
|
2月前
|
机器学习/深度学习 算法
【机器学习】解释对偶的概念及SVM中的对偶算法?(面试回答)
解释了对偶的概念,指出对偶性在优化问题中的重要性,尤其是在强对偶性成立时可以提供主问题的最优下界,并且详细阐述了支持向量机(SVM)中对偶算法的应用,包括如何将原始的最大间隔优化问题转换为对偶问题来求解。
64 2