重学数据结构(一):基本概念

栏目: 数据库 · 发布时间: 6年前

内容简介:我们把数据结构分为逻辑结构和物理结构,逻辑结构是面向问题的,而物理结构就是面向计算机的,其基本目标是将数据及其逻辑关系存储到计算机的内存中。 逻辑结构:是指数据对象中数据元素之间的相互关系。 逻辑结构分为四种:物理结构:是指数据的逻辑结构在计算机中的存储形式。 数据元素的存储结构形式有两种,分别是顺序存储和链接存储:数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。 抽象:是指抽取出事物具有的普遍性的本质。 抽象数据类型(Abstract Data Type, ADT):是指一个数学模型

我们把数据结构分为逻辑结构和物理结构,逻辑结构是面向问题的,而物理结构就是面向计算机的,其基本目标是将数据及其逻辑关系存储到计算机的内存中。 逻辑结构:是指数据对象中数据元素之间的相互关系。 逻辑结构分为四种:

  • 集合结构:集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系。
  • 线性结构:线性结构中的数据元素之间是一对一的关系。
  • 树形结构:树形结构中的数据元素之间存在一种一对多的层次关系。
  • 图形结构:图形结构的数据元素是多对多的关系。

物理结构:是指数据的逻辑结构在计算机中的存储形式。 数据元素的存储结构形式有两种,分别是顺序存储和链接存储:

  • 顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的(如数组)。
  • 链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。此时数据元素的存储关系并不能反应其逻辑关系,因此需要用一个指针存放数据元素的地址,这样通过地址就可以找到相关联数据元素的位置。

抽象数据类型

数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。 抽象:是指抽取出事物具有的普遍性的本质。 抽象数据类型(Abstract Data Type, ADT):是指一个数学模型及定义在该模型上的一组操作。一个抽象数据类型定义了:一个数据对象、数据对象中各数据元素之间的关系及对数据元素的操作。至于,一个数据类型到底需要哪些操作,这就只能由设计者根据实际需要来定。

算法的概念

算法:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

算法具有五个基本特性:

  1. 输入:算法具有零个或多个输入。
  2. 输出:算法至少有一个或多个输出。
  3. 有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接收的时间内完成。
  4. 确定性:算法的每一步都具有确定的含义,不会出现二义性。
  5. 可行性:算法的每一步都必须是可行的,也就是说每一步都能够通过执行有限次数完成。

算法设计的要求:

  • 正确性:指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到问题的正确答案。
  • 可读性:便于他人阅读,让人理解和交流。
  • 健壮性:当输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果。
  • 时间效率高和存储量低

算法的 正确 分为四个层次:

  1. 没有语法错误
  2. 对于合法的输入数据能够产生满足要求的输出结果
  3. 对于非法的输入数据能够得出满足规格说明的结果
  4. 对于静心选择的,甚至刁难的测试数据都有满足要求的输出结果

我们把层次 3 作为一个算法是否正确的标准。

函数的渐进增长

函数的渐进增长:给定两个函数 f(n) 和 g(n),如果存在一个整数 N,使得对于所有的 n > N,f(n) 总是比 g(n) 大,那么,我们说 f(n) 的增长渐进快于 g(n)。 通过分析函数的渐进增长,我们有如下推论:

  • 与最高次项相乘的常数不重要
  • 最高次项的指数对于函数的增长影响最大
  • 推断一个算法的效率时,更应该关注最高阶项的阶数

算法的时间复杂度

在进行算法分析时,语句总的执行次数 T(n) 是关于问题规模 n 的函数,进而分析 T(n) 随 n 变化情况并确定 T(n) 的数量级。算法的时间复杂度,也就是算法的时间度量,记作:T(n) = O(f(n))。它表示随问题规模 n 的增大,算法执行时间的增长率和 f(n) 的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中 f(n) 是问题规模 n 的某个函数。 这样用大写 O()来体现算法时间复杂度的记法,我们称之为 大O记法 。随着 n 的增大,T(n) 增长 最慢 的算法为最优算法。

推到大 O 阶方法

  1. 用常数 1 取代运行时间中的所有加法常数
  2. 在修改后的运行次数函数中,只保留最高阶项
  3. 如果最高阶项存在且不是 1,则去除与这个项相乘的常数

得到的结果就是 大 O 阶 。 常见的时间复杂度:

O(1) < O(logn) < O(n) < O(nlogn) < O(n²) < O(n³) < O(2ⁿ) < O(n!) < O(nⁿ)
复制代码

除非特别指定,我们提到的运行时间都是 最坏 情况的运行时间。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

One Click

One Click

Richard L. Brandt / Portfolio Hardcover / 2011-10-27 / 25.95

An insightful look at how Amazon really works and how its founder and CEO makes it happen. Amazon's business model is deceptively simple: make online shopping so easy and convenient that customers ......一起来看看 《One Click》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具