数据结构知识点复习-(一)绪论

前言-为什么要写这个东西?

作为一个独立学院的普通本科生,大学期间过的平平淡淡,到现在大四出来实习(学的J2EE,但找了个测试,整体环境比较慵懒,但以后还是想回去写代码),并没有把精力全身心投入学习,最近对自己现状很不满意,决定改变一下,以便自己不要被磨平了棱角,借此来开始写一些自己的作品。主要是为了警醒自己,如果有人看到了,希望自己没有写错,并对你有所帮助。内容来自于数据结构课程的笔记,如果有错误,希望帮忙指正。

 

一、基本知识点

在正式讲数据结构之前,需要先了解一些基本概念。

为什么要学习数据结构?

学习数据结构是为了能够写出好的程序。

关于程序:程序=数据结构+算法;

解决实际问题的步骤:从具体问题抽象出数学模型(数学建模)→设计解决该模型的算法→编写程序→调试、修改→最终结果;

 

然后是一些名词的解释:

1.数据:凡是能被计算机程序处理的符号总称。 如果把计算机看做工厂,那么数据就是加工原料,程序就是加工机器。

2.数据元素:数据的不可分割的最小基本单位。

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

4.数据对象:具有相同性质的数据元素的集合。  例:整数集合,素数集合。

 

二,正篇

1.数据结构的基本类型

(1)集合结构:无对应关系的散点(自己的理解);

(2)线性结构:具有一对一关系的点;

(3)树形结构:具有一对多关系的点;

(4)图形结构(网状结构);具有多对多关系的点;

这里的点是指数据元素。

2.数据结构的组成

数据结构=逻辑结构+物理结构+运算(操作);

(1)逻辑结构:描述集合中数据元素之间的某种逻辑关系(不依赖计算机)

表示为:B=(D,R)

D:数据元素的有限集;R:关系的有限集;

例:B=(D,R)

D={A,B,C,D,E,F,G,H};

R={(D,B),(D,G),(D,A),(B,C),(G,E),(G,H),(E,F)};

(2)物理结构:数据的逻辑结构在计算机存储器上的实现(依赖计算机)

存储方法:存储元素;体现关系;

常用的存储方法:

(1)顺序存储法:逻辑相邻的数据物理上也相邻,代表为数组,静态分配;

(2)链式存储法:逻辑相邻的数据物理上不要求相邻,代表为链表,动态分配;

(3)索引存储法:利用结点的索引号来确定结点地址;

(4)哈希法(散列法):利用结点的值来确定结点地址的方法,其关键是寻求一个恰当的哈希函数H(key)

H(key)=key and m;

key:结点的值;m:哈希表的长度;

3,运算(操作)

建立,查找,删除,插入,修改,遍历,排序

三,算法及其评价

1.算法

算法是解决某一类特定类型问题的有限运算序列;(方法和思路)

2.算法的基本特性

有穷性:算法必须能在有限步骤后终止;

确定性:算法的每一步都要有确定的含义;

可行性:算法的每一步都可行;

输入:算法有0个或多个输入;

输出:算法至少有1个或多个输出;

3.评估算法的标准

正确性;

可读性;

健壮性;

高效性(时间复杂度/空间复杂度);

四,时间复杂度的计算

(1)运行时间:一个算法在计算机上运行所需的时间。通常用时间复杂度来衡量。

(2)频度:一个算法中基本语句或操作重复执行的次数。通常用f(n)表示,n为问题的规模。

(3)时间复杂度:一个算法中基本语句或操作重复执行次数的数量级。记作T(n)=O(f(n))

常用的时间复杂度: 常量阶时间复杂度O(1),线性阶时间复杂度O(n),平方阶时间复杂度O(n²),对数阶时间复杂度O(logn),立方阶时间复杂度O(n³),线性对数阶时间复杂度O(nlogn)

时间复杂度确定原则:取时间复杂度最高的;

时间复杂度大小比较:O(1)<O(logn)<O(n)<O(nlogn)<O(n²)<O(n³);

例:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值