数据结构与算法笔记一

数据结构的基本概念:
数据:数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入到计算机并被计算机程序识别和处理的符号的集合。

数据元素:数据元素是数据的基本单位,通常作为一个整体进行考虑和处理,一个数据元素可由若干个数据项组成,数据项是构

                   成数据元素的不可分割的最小单位。如:学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。
数据对象:是具有相同性质的数据元素的集合,是数据的一个子集。
数据类型:数据类型是一个值的集合和定义在此集合上的一组操作的总称。

                 1、原子类型:其值不可再分的数据类型。如C语言的标准类型整型和实型

                 2、结构类型:其值可以再分成若干成分的(分量)的数据类型。

                 3、抽象数据类型:是指一个数学模型及定义在该模型上的一组操作,抽象数据类型的的定义仅取决于它的一组逻辑特性,而与其在机内的表示和实现无关,即不论它其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。

基本运算:基本运算只描述处理功能,不包括处理的步骤和方法,是在逻辑结构上的操作。

运算实现:运算实现的核心是处理步骤的规定,即算法设计。对一个复杂的运算仍需按照逐步求精的方法构造它的实现。

算法:算法是指解决某一特定问题的有限运算序列。它具有以下特性:

          1、有穷性

          2、确定性

          3、输入

          4、输出

          5、可行性

数据结构的三要素:

数据的逻辑结构:逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。它与数据的存储无关,是独立于计算机的。

                            分为线性结构非线性结构,其中线性表是典型的线性结构,集合、树、图是典型的非线性结构。

数据的存储结构:存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构。它包括数据元素的表示和关系的表示。

数据的存储结构有:顺序存储链接存储索引存储散列存储

PS:在计算机中表示信息的最小单位是二进制数的一位,叫做位(bit),在计算机中可以用一个若干位组成合起来形成的一个位串

     表示一个数据元素,通常称这个位串味元素或节点。

算法效率的度量

算法效率的度量是通过时间复杂度空间复杂度来描述的。

1、时间复杂度

      一个语句的频度是指该语句在算法中被重复执行的的次数。算法中所有语句的频度之和记为f(n),它是该算法问题规模n的函数,时间复杂度主要分析T(n)的数量级。算法中基本运算(最深层循环内的语句)的频度与T(n)同数量级,所以通常采用算法中基本运算的频度f(n)来分析算法的时间复杂度,因此算法的时间复杂度记为:

                                    T(n)=O(f(n))

其中"O"的含义是T(n)的数量级,其严格的数学定义是:若T(n)和f(n)是定义在正整数集合上的两个函数,则存在正常数C和n0,使得当n>=n0时,都满足0<=T(n)<=C*f(n)

PS:算法的时间复杂度不仅依赖于问题的规模n,也取决于输入数据的性质(如输入数据元素的初始状态)

最坏时间复杂度:是指在最坏的情况下,算法的时间复杂度。

平均时间复杂度:是指所有可能输入实例在等概率出现的情况下,算法的期望运行时间

最好时间复杂度:是指在最好的情况下,算法的时间复杂度。

2、空间复杂度

   算法的空间复杂度S(n)定义为该算法所耗费的存储空间。它是问题规模n的函数,渐近空间复杂度也常简称为空间复杂度,记作

               S(n)=O(g(n))

PS:算法原地工作是指算法所需辅助空间是常量,即O(1)。并不是1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Master_Yoda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值