数据结构-简介和部分算法分析

发布于:2023-01-04 ⋅ 阅读:(478) ⋅ 点赞:(0)

程序=算法+数据结构

电子计算机的主要用途:

早期:
主要用于数值计算后来:
处理逐渐扩大到非数值计算领域,

能处理多种复杂的具有一定结构关系的数据


人机对弈问题是树问题

学生学籍可以用线性表表示

文件系统可以用树存储

教学计划编排问题,可以用图


数据结构的研究内容为:

研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作。

1.数据(data)

一切能输入到计算机中并能被计算机程序识别和处理的符号集合
数值性数据:整数、实数等
非数值性数据:图形、图象、声音、文字等
 

2.数据元素(dataelement)
数据的基本单位,在计算机程序中通常将其作为一个整体进行考虑和处理,也称结点(node)或记录(record)

3.数据项(dataitem)
是构成数据元素的不可分割的最小单位,也被称为字段、域或属性。

 4.数据对象(Data Object)

具有相同性质的数据元素的集合,是数据的一个子集,例如,整数的数据对象是集合N={0, ±1, ±2, …} ,英文字母的数据对象是集合C={‘a’, ‘A’, ‘b’, ‘B’, …}

5.数据结构(Data Structure)

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

通常这些数据元素都不是孤立存在的,而是通过某种关系将所有数据元素联系起来,我们将这种关系称为“结构”。
这种关系是抽象的,即并不涉及数据元素的具体内容。是数据元素及其相互间的关系的数学描述。

数据结构的两个层次

逻辑结构:数据元素间抽象化的相互关系,与数据的存储无关,独立于计算机,它是从具体问题抽象出来的数学模型。

 

存储结构(物理结构):数据元素及其关系在计算机存储器中的存储方式。

 数据运算

 逻辑结构和存储结构都相同, 但运算不同, 则数据结构不同,例如, 栈与队列。

 

增删查改加排序

 
 数据类型

1.数字(Number)数据类型
Python中的数字数据类型用于存储数值,如整型、浮点型和复数型,定义在其上的操作有加、减、乘和除等。
2.字符串(String)数据类型
字符串是Python中最为常用的数据类型之一,通常使用单引号或双引号来创建。定义在其上的操作有字符串连接(“+”)、重复输出字符串(“*”)、通过索引获取字符串中的字符(“[]”)、截取字符串中的一部分(“[:]”)、若包含指定字符则返回True(“in”)、若不包含指定字符则返回True(“notin”)、原始字符串(“r/R”)和格式字符串(“%”)等。

3.列表(List)数据类型
列表是Python中最常用的数据类型之一,通常使用方括号来创建。定义在其上的操作有访问列表中的值、更新列表和删除列表元素等,同时与字符串类似,列表也包括连接、重复和截取等操作。
 

4.元组(Tuple)数据类型
Python中元组与列表类似,但元组使用小括号创建,并且其中的元素不能修改。定义在元组上的操作有访问元组、修改删除元组,同时元组也包括连接重复截取等操作。

5.集合(Set)数据类型
集合是由一组无序不重复的元素组成的序列,常使用{}或者set()函数来创建。定义在其上的操作有进行成员关系测试和删除重复元素等。


6.字典数据类型
Python中字典形如{key1:value1,key2:value2,…},其中key1和key2部分被称为键(必须是唯一的),value1和value2被称为值。定义在字典上的操作有修改和删除等。

抽象数据类型(ADTs: Abstract Data Types)

更高层次的数据抽象。

由用户定义,以表示应用问题的数据模型

基本的数据类型组成, 并包括一组相关的操作

异构/多模态数据


算法与算法分析 

1.算法的特性

2.算法的评价

(1)正确性:要求算法能够正确地执行,并满足预先设定的功能和性能要求,大致分为以下4个层次。
①程序不含语法错误。
②程序对于几组输入数据,能够得出满足要求的结果。
③程序对于精心选择的典型、苛刻而带有刁难性的几组输入数据,能够得出满足要求的结果。
④程序对于一切合法的输入数据,都能够得出满足要求的结果。

(2)可读性:算法主要是为了给人们阅读和交流的,其次才是在计算机上执行。一个算法的可读性好才便于人们理解,人们才有可能对程序进行调试,并从中找出错误。接下来给出几个在程序编写上提高可读性的方法。
①注释:给程序添加注释,不仅有利于程序设计者自己阅读和查错,也为后续维护人员理解该程序带来方便。
②变量命名:较复杂的程序通常会涉及较多的变量命名,此时应合理设计变量的名字,从而给后续使用该变量带来方便。

 (3)健壮性:当输入的数据不合法或运行环境改变时,算法能恰当地做出反应或进行处理,而不是产生莫名其妙的输出结果。
(4)时间复杂度:对一个算法执行效率的度量。
(5)空间复杂度:是指一个算法在执行过程中所占用的存储空间的度量

 

 

 

 

 

 

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到