01_数据结构绪论

数据结构绪论

关于基本概念

数据(Data) :是客观事物的符号表示。在计算机科学中指的是所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素(Data Element) :是数据的基本单位,在程序中通常作为一个整体来进行考虑和处理。

数据结构(Data Structure):是指相互之间具有(存在)一定联系(关系)的数据元素的集合。元素之间的相互联系(关系)称为逻辑结构。数据元素之间的逻辑结构有四种基本类型:

  • 集合:结构中的数据元素除了“同属于一个集合”外,没有其它关系。
  • 线性结构:结构中的数据元素之间存在一对一的关系。
  • 树型结构:结构中的数据元素之间存在一对多的关系。
  • 图状结构或网状结构:结构中的数据元素之间存在多对多的关系。

关于数据结构的存储方式

数据结构在计算机内存中的存储包括数据元素的存储和元素之间的关系的表示。元素之间的关系在计算机中有两种不同的表示方法:

顺序表示和非顺序表示

由此得出两种不同的存储结构:

顺序存储结构和链式存储结构。
  • 顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构(关系)。

  • 链式存储结构:在每一个数据元素中增加一个存放另一个元素地址的指针(pointer ),用该指针来表
    示数据元素之间的逻辑结构(关系)。

 顺序结构:数据元素存放的地址是连续的;
 链式结构:数据元素存放的地址是否连续没有要求。
数据的逻辑结构和物理结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。
在C语言中,用一维数组表示顺序存储结构;用结构体类型表示链式存储结构。

关于数据结构的组成

  • 逻辑(物理)结构: 数据元素之间逻辑关系的描述

  • 存储结构: 数据元素在计算机中的存储及其逻辑关系的表现称为数据的存储结构或物理结构。

  • 数据操作:对数据要进行的运算。

    至于考研复习中所学到的大概就是下面这样的:
    在这里插入图片描述

    关于抽象数据类型

    抽象数据类型 抽象数据类型(Abstract Data Type ,简称ADT):是指一个数学模型以及定义在该模型上的一组操作。
    ADT的形式化定义是三元组:ADT=(D,S,P)其中:D是数据对象,S是D上的关系集,P是对D的基
    本操作集。
    ADT的一般定义形式是:

     ADT <抽象数据类型名>{
     		数据对象: <数据对象的定义>
     		数据关系: <数据关系的定义>
     		基本操作: <基本操作的定义>
     } ADT <抽象数据类型名>
    

关于算法

算法(Algorithm):是对特定问题求解方法(步骤)的一种描述,是指令的有限序列,其中每一条指令表示一个
或多个操作。
算法具有以下五个特性
① 有穷性: 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
② 确定性:算法中每一条指令必须有确切的含义。不存在二义性。且算法只有一个入口和一个出口。
③ 可行性: 一个算法是能行的。即算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。
④ 输输入入: 一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。
⑤ 输出: 一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。

关于时间复杂度和空间复杂度

时间复杂度

定义概念什么的也就不说了,就只是单纯的提供一个分析时间复杂度的方法

1.确定循环的终止条件
2.确定循环变量的递增或者递减方式
3.假设,假设执行了t次,跳出了循环
4.将t带入循环的终止条件

个人感觉挺好用的,至于是否通用也不敢确定,因程序而异,也因人而异,

void fun(int n){
int i = 1;
while(i <= n)
    i = i * 2;
}

循环的终止条件:i <= n;
循环变量的递增方式:i= i*2;
假设执行了t次跳出循环  1*2*2*2.......
将t代入第一步:1*2^t <= n
解得:t<=logn(以2为底)

以下六种计算算法时间的多项式是最常用的。其关系为:

  O(1)<O(㏒n)<O(n)<O(n㏒n)<O(n^2)<O(n^3)

指数时间的关系为:

O(2^n)<O(n!)<O(n^n)

空间复杂度

空间复杂度(Space complexity) :是指算法编写成程序后,在计算机中运行时所需存储空间大小的度量。记作: S(n)=O(f(n)) ; 其中: n为问题的规模(或大小)
该存储空间一般包括三个方面:
指令常数变量所占用的存储空间;
输入数据所占用的存储空间;
辅助(存储)空间。 一般地,算法的空间复杂度指的是辅助空间。

一维数组a[n]: 空间复杂度 O(n)
二维数组a[n][m]: 空间复杂度 O(n*m)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值