大话数据结构与算法:基础篇-程序员宅基地

技术标签: 数据结构与算法导论  

1.数据结构的重要性

        数据结构是计算机软件相关专业的基础课程,几乎可以说,要想从事编程工作,无论是否是科班出身(比如我,标准的非科班人员,我是学医的,哈哈)都不可以绕过数据结构与算法这部分知识。

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

        If you give someone a program,you will frustrate them for a day; if you teach them how to program,you will frustrate them for a lifetime.

2. 数据结构起源与基本概念

       数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作的问题的学科。
       程序设计 = 数据结构+算法

2.1 数据

数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。
比如我们现在常用的搜索引擎,一般会有网页、MP3、图片、视频等的分类。MP3就是声音数据,图片当然是图像数据,视频就不用说了,而网页其实指的就是全部数据的搜索,包括最重要的数字和字符等文字数据。所以,我们所谈到的的数据,其实就是符号,这些符号应该具备两个前提:1,可以输入到计算机中;2,能被计算机程序处理;

2.2数据元素

数据元素是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。

2.3数据项

一个数据元素可以有若干个数据项组成。比如人这样的数据元素,可以有眼、耳、鼻、嘴、手、脚这些数据项,也可以有姓名、年龄、行呗、出生地址。联系电话等数据项,具体需要哪些数据项,需要根据我们所做的系统来决定。
数据项是数据不可分割的最小单位

2.4数据对象

数据对象是指性质相同的数据元素的集合,是数据的子集。

3.数据结构分类

按照视点的不同,数据结构可以分为逻辑结构和物理结构。

3.1逻辑结构

逻辑结构是指数据对象中数据元素之间的相互关系。这也是我们后阶段最需要关注的问题。逻辑结构进一步可以细分为:几何结构、线性结构、树形结构、图形结构。

3.2物理结构

数据的物理结构也就是数据的存储结构。物理结构指数据的逻辑结构在计算机中的存储形式。数据是数据元素的集合,那么根据物理结构的定义,实际上就是如何把数据元素存储到计算机的存储器中。存储器主要是针对内存而言的,想硬盘、软盘、光盘等外部存储器的数据组织通常用文件结构来描述。
数据元素的存储结构形式有两种:顺序存储和链式存储。
顺序存储结构是把数据元素放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的(C语言中的数组就是这样的顺序存储结构)
链式存储结构是吧数据元素存放在任意的存储单元中,这组存储单元可以是连续的,也可以是不连续的。数据元素的存储关系并不能反映其逻辑关系。因此需要用一个指针存放数据元素的地址。这样,我们可以通过地址就可以找到相关联数据元素的位置。
相对比之下,我们可以发现,链式存储要比顺序存储灵活得多!数据存储在哪里并不重要,只要有一个指针存放了相应的地址我们就可以找到它。

4.抽象数据类型

数据类型是指一组性质相同的值得集合及定义在此集合上的一些操作的总称。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shenziheng1/article/details/51506054

智能推荐

Office2016的安装进度在 90% 时挂起_office365 安装94%报错-程序员宅基地

文章浏览阅读6.2k次。问题描述:正在尝试安装 Office 365、Office 2016 或 Office 2013,安装在完成标记大约为 90% 时,变为无响应(挂起或冻结)。如果 Windows Installer 繁忙,则可能会发生此问题。解决方法:如果 Windows 更新正在使用 Windows Installer,则 Office 安装必须等到使用 Windows Installer 完成更新进程..._office365 安装94%报错

朴素贝叶斯算法检测DGA_dga sklearn-程序员宅基地

文章浏览阅读910次。僵尸网络&恶意软等程序,随着检测手段的更新(在早期,僵尸主机通产采用轮询的方法访问硬编码的C&C域名或IP来访问服务器获取域名,但是这种方式在安全人员进行逆向之后会得到有效的屏蔽),黑客们也升级了肉鸡的C&C手段;用DGA算法在终端生成大量备选域名,而攻击者与恶意软件运行同一套DGA算法,生成相同的备选域名列表。当需要发动攻击的时候,选择其中少量进行注册,便可以建立通信,并且可以对注册的域名应用速变IP技术,快速变换IP,从而域名和IP都可以进行快速变化。目前,黑客攻击者为了防止恶_dga sklearn

ORACLE 10g R2各版本及patch下载地址_oracle 10g r2版本号-程序员宅基地

文章浏览阅读3.7k次。Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (32-bit)http://download.oracle.com/otn/nt/oracle10g/10201/10201_database_win32.ziphttp://download.ora_oracle 10g r2版本号

内核驱动 (二)Linux按键驱动分析_linux key_power的值-程序员宅基地

文章浏览阅读3.7k次,点赞7次,收藏23次。一、按键驱动1、对按键驱动添加设备信息linux-stable-3.10.46对按键的驱动定义在gpio_keys.c (drivers\input\keyboard)文件中,在led驱动分析中,我们知道,只有平台设备和平台驱动两者的name名字一致才可以注册成功一个驱动。这里,内核代码中没有对按键平台信息的定义,因此我们需要给他补充完整。首先将按键驱动编译到内核: Devi..._linux key_power的值

kubernetes安全控制认证与授权(二)_csdn --authorization-mode=alwaysallow-程序员宅基地

文章浏览阅读7.3k次。本文将继续kubernetes授权体系。授权主要是用于对集群资源的访问控制,通过检查请求包含的相关属性值,与相对应的访问策略相比较,API请求必须满足某些策略才能被处理。跟认证类似,Kubernetes也支持多种授权机制,并支持同时开启多个授权插件(只要有一个验证通过即可)。如果授权成功,则用户的请求会发送到准入控制模块做进一步的请求验证;对于授权失败的请求则返回HTTP 403。_csdn --authorization-mode=alwaysallow

hive -e 包含 warn 日志_hive -e 日志-程序员宅基地

文章浏览阅读3k次。有时候执行会包含 WARN 开头的日志WARN:Themethodclassorg.apache.commons.logging.impl.SLF4JLogFactory#release()wasinvoked.WARN:Pleaseseehttp://www.slf4j.org/codes.html#releaseforanexplanation.解决方案:..._hive -e 日志

随便推点

Linux的基本命令(1)-程序员宅基地

文章浏览阅读2.3k次。以vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式种,你可以使用【上下左右】按键移动光标,你可以使用【删除字符】或【删除整行】来处理档案内容,也可以使用【复制、贴上】来处理你的文件数据。(**在正常模式下,我们可以使用快捷键。**)**在这个模式下,程序员可以输入内容。**按下【i,I,o,O,a,A,r,R】等任何一个字母之后才会进入编辑模式,一般来说按i即可。在这个模式种,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作则是在此模式中达成的。、

Leetcode 401:二进制手表(最详细的解法!!!)_二进制手表顶部有 4 个 led 代表小时(0-11),底部的 6 个 led 代表分钟(0-59)-程序员宅基地

文章浏览阅读2.2k次。二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。 例如,上面的二进制手表读取 “3:25”。给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。案例:输入: n = 1返回: ["1:00", "2:00"_二进制手表顶部有 4 个 led 代表小时(0-11),底部的 6 个 led 代表分钟(0-59)。

服务器的部署方案_服务器实施部署方案-程序员宅基地

文章浏览阅读8.4k次。在这里给大家需要介绍一下两种部署方案:* 前后端不分离 (前后端耦合)* 前后端分离假设我们的前端项目和后端项目已经开发完成了,前端是在我们自己的本地服务器开发的,后端也会在自己的服务器上开发完成,每开发到一个大阶段,或者是开发到最后,我们都需要将项目部署到外网服务器上(上线),至于如何部署我们的服务器,各个服务器都会启动什么服务,承载什么内容,服务器之间有什么关系这些都属于服务器部..._服务器实施部署方案

POJ 2828_poj2828-程序员宅基地

文章浏览阅读381次。POJ 2828 (单点修改 区间查询)题目链接:POJ 2828题意:n个人,每个人不断地插入到队伍中。输入a b表示号码为b的插入到第a个后面。分析:需要逆序处理插入队伍的信息。每个区间记录着每个区间能存放的人的数量。逆序插入时,若左子树还能放人,则放到左子树那,否则放到右子树那。当前区间减1,并且将val的值放入到最终的答案中。逆序处理的原因:如下面的_poj2828

solr6.+版本基础环境搭建教程-程序员宅基地

文章浏览阅读232次。目前网上关于solr6.0以上版本的的安装教程很少,有些6.0之前的教程在应用到6.+的版本中出现很多的问题,所以特别整理出来这一片文章,帮助各位程序猿快速搭建solr的开发环境.1.windows环境软件准备下载地址solr: http://archive.apache.org/dist/lucene/solr/tomcat8: https://tomcat.apache.org

SQL 把每个表导出到CSV,然后压缩全部的csv,作为备份。_闫祥君-程序员宅基地

文章浏览阅读716次。USE [emes_yun]GO/****** Object: StoredProcedure [dbo].[db_BackUpExport] Script Date: 2019/3/5 14:21:19 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[db_BackUpE..._闫祥君

推荐文章

热门文章

相关标签