数据结构与算法学习笔记——基本概念

        从零开始学算法,首先从数据结构的学习开始,本人基于《大话数据结构》这本书,记录自己的学习日常和感悟,如有不足之处希望大家批评指正。

一、数据结构

(一)基本术语

1.数据:

        数据是可以被计算机识别并进行相关操作的信息,分为两种,一是我们通常意义下的数值(整型,浮点型、实型等),二是非数值类型(字符、声音、图像、视频等),字符数据可以进行非数值处理,声音、图像、视频等数据可以通过相关编码处理转化为字符数据,从而进行处理。

2.数据元素:数据元素是组成数据的基本单位

3.数据项:一个数据元素由若干个数据项组成

4.数据对象:相同性质数据元素的集合

5.数据结构:具有一定关系的数据元素的集合

看完上述文字,可能还是有一些凌乱,让我们来举一个例子,假设在生物这个群体中,有人类,牲畜类等,在人类群体中的数据元素就是人,并且根据不同的分类方式可以得出不同的数据项,从一个角度看人的各个器官就是数据项,从另一个角度看人的姓名、性别等信息也是人的数据项。而在这个情况下,有的人具有相同的性别(或者别的相同数据项),那么他们的集合就属于数据对象。数据结构可以类比家庭族谱,这个家族的人就具有相应的联系,他们的集合就成为数据结构。这是我个人的一些理解。

(二)结构

1.逻辑结构:数据对象中数据元素之间的相互关系,这个大家应该很容易理解。

集合结构,所有元素属于一个集合,元素之间相互没有关系

线性结构,一对一

树形结构,一对一或一对多

图形结构,多对多

2.物理结构:数据在计算机中的存储形式

顺序存储:按照顺序将数据存放在连续的存储单元中

链式存储:数据元素存放在任意的存储单元中,通过指针存放数据元素的地址,这样在使用时就可以找到相关的数据元素

二、算法

        算法是解决特定问题求解步骤的描述,有五个基本特性:输入、输出、有穷性、确定性和可行性。不会出现死循环表示有穷,一条指令只有单纯的一个含义表示了算法的确定性,算法的每一步都能够通过执行有限次数完成即算法的可行性。那么算法那么多,如何判断这个算法的好与坏?这里引出一个概念,算法的时间复杂度。

        算法的时间复杂度通过语句总的执行次数T(n)进行计算,分析T(n)随着n的变化情况确定​​​​​​​T(n)的数量级,记作O(f(n)),这是大〇记法,具体规则如下:

        1.用常数1取代运行时间中的所有加法常数

        2.在修改后的运行次数函数中,只保留最高阶项

        3.如果最高阶项存在且不为1,则去除与该项相乘的常数。得到的结果就是大〇阶

常见的时间复杂度

         O(1)< O(log n)< O(n)< O(nlog n)< O(n^{2})< O(n^{3})< O(2^{n})< O(n!)< O(n^{n})

         时间复杂度又分为平均时间复杂度和最坏时间复杂度,一般没有特殊说明情况下,指的都是最坏时间复杂度。

        算法除了时间复杂度外还有空间复杂度,空间复杂度表示了为实现该算法所占用存储空间的大小,一般没有特指的情况下,复杂度指的是时间复杂度。


        通过第一次学习,了解了一些基本概念,重点掌握复杂度的计算与比较,对未来的代码编写有非常重要的作用。

        接下来,我将学习线性表的相关知识,相关编程语言采用C++,加油吧胖虎同学!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值