博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构学习笔记——数据结构基本概念与算法
阅读量:3934 次
发布时间:2019-05-23

本文共 2141 字,大约阅读时间需要 7 分钟。

基本概念与算法

  • 一个程序,就是数据结构加上算法,因此数据结构和算法对于计算机来说是极其重要的。

一、基本概念

1、数据的定义

  • 数据是信息的载体,计算机中的数据可以是字符、图像、音视频等可以被计算机识别和处理的信息的集合。

2、数据元素

  • 数据元素是数据的基本单位,而一个数据元素由若干数据项组成,数据项是构成数据元素的最小单位即不可再进行有意义的分割。对数据项进行分割的后果就是失去其所承载的信息。如座位表中的学生姓名就是一个数据项,若对学生姓名拆分为单个汉字,则便失去了原有意义即信息。

3、数据对象

  • 指具有相同性质的数据元素的集合,是数据的一个子集。

4、数据类型

  • 数据类型是一个值的集合和定义在此集合上的一组操作的总称。
    1)原子类型:其值不可再分的数据类型。
    2)结构类型:其值可以再分解为若干成分(分量)的数据类型
    3)抽象数据类型:抽象数据组织及与之相关的操作。

5、数据结构

  • 数据结构是相互之间存在一种或多种特定关系的数据元素的集合,其中的元素之间的相互关系就称作结构。包括逻辑结构、存储结构和数据的运算。

5.1、逻辑结构

  • 指数据元素之间的逻辑关系,即从逻辑关系上对数据进行描述,与数据的存储无关,是独立于计算机的;逻辑结构分为线性结构和非线性结构,线性结构的典型代表就是线性表,而非线性结构的典型代表是集合、图和树。

5.2、存储结构

  • 指数据结构在计算机中的表示,也称物理结构;包括数据元素的表示和关系的表示。数据存储结构是用计算机语言实现的逻辑结构,依赖于计算机语言。存储结构分为顺序存储、链式存储、索引存储和散列存储。

5.3、数据运算

  • 施加在数据上的运算包括定义和实现;定义是针对逻辑结构的,指出运算的功能;实现是针对存储结构的,指出运算的具体操作步骤。

二、算法

1、算法的定义

  • 算法(Algorithm),是针对特定问题的求解过程的描述,是一个有限长的操作序列。

2、算法的特点

  • 每个算法遵循 ”IPO“规则,这个从其特点表现出来;算法有五个重要特点:
    1)有穷性:算法必须在有穷个步骤后结束。
    2)确定性:算法对每种涉及到的情况,如何操作必须是明确的,不能有二义性。
    3)可行性:算法中的所有操作,都可以通过已经实现的基本操作运算执行的有限次来完成。
    4)输入:一个算法可以有零个或多个输入。
    5)输出:一个算法有个一个或多个输出,是对所求解问题的结果的输出。算法必须有输出,没输出的算法没有意义。

3、算法的评价标准

  • 算法的优劣与否,可与从如下五个方面进行考虑:
    1)正确性:算法在正确参数的设置下应当能够正确求出结果。
    2)可读性:好的算法应当是可以被人们理解的。
    3)健壮性:好的算法应当经得起用户的一定量的非法操作,并对这些非法操作做出适当反应,而不是产生莫名其妙的结果。
    4)高效性:好的算法应当具有低的空间复杂度和时间复杂度。

4、算法的时间复杂度

1)语句频度:指算法中一条语句被重复执行的次数

  • 算法中所有语句频度之和记为T(n),是关于算法问题规模 n 的函数,时间复杂度主要分析 T(n) 的数量级。
  • 由于算法中最深层循环内的基本语句的频度与 T(n) 同数量级,因此通常采用最深层循环的语句的频度f(n)来分析算法时间复杂度,并采用大O记法,即:T(n)=O(f(n))
  • 算法的时间复杂度与问题规模 n、算法的初始参数设置以及输入参数等都有关系。以在数组中查找指定值的下标为示例:
    int find(int *arr,int value){
    int i=0; int len = getLength(*arr); for(i=0;i
  • 当数组的第一个元素就是与指定数值相等,那么if语句的频度就是常数 1。
  • 当数组中没有与指定数值相等的元素,那么 if 语句的频度 f(n)=len,即数组长度。
  • 因此一个算法便有了最好、最坏和一般情况。
  • 最好时间复杂度,指在最好情况下,算法的时间复杂度。
  • 平均时间复杂度,指在一般情况下,即所有可能输入实例在等可能的情况下,算法的期望运行时间。
  • 最坏时间复杂度,指在最坏情况下算法的时间复杂度。
  • 在分析算法时间复杂度时,有加法规则和乘法规则必须遵循:
    a)加法规则:T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n))).
    b)乘法规则:T(n)=t1(n)*T2(n)=O(f(n))*O(g(n))=O(f(n)*g(n)).
  • 常见的渐进时间复杂度:
    O(1)<O(log2(n))<O(n)<O(nlog2(n))<O(n*n)<O(n!)<O(n^n).

5、算法的空间复杂度

  • 空间复杂度是算法所需存储空间的量度,与时间复杂度一样,是一种渐进刻画;空间复杂的记为S(n),同样是问题规模 n 的函数,记作S(n)=O(g(n))
  • 通常,程序在计算机中执行时,除了存放本身指令、常数、变量和输入数据的存储空间外,还需要一些对数据进行操作的工作单元和存储一些为实现计算所需的信息的辅助空间。若输入数据所占空间只是取决于问题本身,和算法无关,则只需分析除输入和程序之外的额外空间。
  • 原地工作:是指算法所需的辅助空间为常量,即O(1)。

转载地址:http://sqqgn.baihongyu.com/

你可能感兴趣的文章
PHP中文件读写操作
查看>>
PHP操作FTP-用法
查看>>
PHP面向对象v1:
查看>>
迭代开发优点
查看>>
php开发常识b_01
查看>>
php基础算法
查看>>
PHP PDO 学习笔记
查看>>
PDO存取资料库
查看>>
PDO常见用法
查看>>
curl用法
查看>>
csv文件读写操作
查看>>
Smarty模板引擎应用
查看>>
ThinkPHP框架应用
查看>>
magic_quotes_gpc与magic_quotes_runtime
查看>>
php写爬虫工具
查看>>
php 定时执行任务
查看>>
php是什么
查看>>
谷歌发布apache加速模块 加速50%
查看>>
工作日志
查看>>
https工作原理
查看>>