zoukankan      html  css  js  c++  java
  • 数据结构(一)数据结构基础

    数据结构的基础概念

    数据是表征客观事物的可记录可识别的符号集合。

    数据:

    描述客观事物的数值、字符以及一切能输入到计算机且能被处理的符号集合。

    数据元素:

    数据元素是组成数据的基本单位,是数据集合的个体。

    数据对象:

    数据对象是性质相同的数据元素的集合,是数据集的一个子集。

    数据结构:

    数据结构,是相互之间存在一种或多种特定关系的数据元素集合。强调是带有结构的数据元素的集合,数据元素之间的相互关系,即数据的组织形式。

    数据类型:

    一组性质相同的值集合以及定义其上的一组操作的集合。

    抽象:

    抽象是计算机技术的本质技术。

    抽象数据类型ADT:就是定义在一个模型上的一组操作的集合

    其特点是抽象和隐蔽;

    包括定义和实现两大方面。

    数据结构的内容:

      数据结构的内容,即数据结构的研究范围;

      数据结构注重的是数据元素之间的相互关系;

      数据结构的内容包括逻辑结构和数据结构的存储结构及运算集合。

    • 【数据结构的逻辑结构】
    数据元素之间存在四种基本的逻辑结构:

    (1) 集合结构:集合是属于与不属于简单的关系; 

    (2) 线性结构:结构中的数据元素之间存在着一对一的线性关系:如线性表(学籍表);

     (3)树形结构:结构中的数据元素之间存在着一对多的层次关系:如树(学校组织结构图); 

    (4) 图形结构:结构中的数据元素之间存在着多对多的任意关系:如图(网络节点图);

       综上所述,数据的逻辑结构可概括为: ​ 线性结构-----线性表、栈、队列、双队列、字符串、数组、广义表  ;非线性结构----树、图 ;

    • 【数据结构的存储结构】:

      是逻辑结构在计算机中的存储映象,也是在计算机中的实现。

    逻辑结构和存储结构之间的关系:

      存储结构是逻辑关系的映象。逻辑结构是数据结构的抽象,存储结构是数据结构的实现,两者综合起来建立了数据元素之间的结构关系。

    数据元素之间关系在计算机中的存储映像分为:
    • 顺序映象(顺序存储结构,如数组,就是一组连续配置的单元) ; 
    • 非顺序映象(非顺序存储结构,如链表,是一组任意配置的单元,通过指针连接起来,维持逻辑关系)。
    运算集合:

      定义在数据集及数据元素关系集上的运算操作集合; 数据结构的内容:按照一定的逻辑关系组织起来的一批数据,按一定的映像方式存放在计算机中,并在其上定义运算集合,就构成数据结构内容的三要素。

    算法性能评价:

    【性能评价】应是问题规模的函数,以刻画表征问题规模的大小。 

    【问题规模】对于不同的问题其含义不同: 如矩阵的阶、多项式的项数、图的顶点数、集合的个数等,是反映问题大小的本质数目。

    【时间数量关系的计算方法】

      算法实际执行时间与机器硬件和软件环境相关(比如两个机器的性能指标不同,就不便比较算法执行的快慢),舍弃机器环境差异影响,语句执行时间本质就是语句执行次数,与机器环境无关。 因此算法的执行时间就是算法所有语句的执行次数之和。

    【算法的时间复杂度T(n)】

      一个算法的时间复杂度T(n)是该算法的时间度量, 计作: T(n)=O(f(n)) 它表示随问题规模 n 的增大,算法的执行时间的增长率和 f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。 

    【常用算法时间复杂度】 

    数据结构中常用的时间复杂度频率计数有 7 个:O(1) 常数型 O(n)线性型 O(n2)平方型 O(n3)立方型 O(2n)指数型 O(log2n)对数型 O(nlog2n)二维型

    按时间复杂度由小到大递增排列成表 1-3(当 n 充分大时):

      一般情况下,随 n 的增大,T(n)的增长较慢的算法为最优的方法。 从中我们应该选择使用多项式阶 O(nk)的算法,而避免使用指数阶的算法。

    常用的时间复杂度频率表

    【最坏时间复杂度】 :是指执行基本操作的最大次数。基本操作时指算法中基本运算的操作。

    【算法的空间性能分析】 类似于时间复杂度的讨论,一个算法的空间复杂度 S(n)定义为该算法所耗费的存储空间的数量级,它也是问题规模 n 的函数。

    记做: S(n)=O(f(n))

      一般情况下,一个程序在机器上执行时,除了需要寄存本身所用的指令、常数、 变量和输入数据以外,还需要一些对数据进行操作的辅助存储空间。其中对于输 入数据所占的具体存储量只取决于问题本身,与算法无关,这样我们只需要分析 该算法在实现时所需要的辅助空间单元个数就可以了。若算法执行时所需要的辅 助空间相对于输入数据量而言是个常数,则称这个算法为原地工作,辅助空间为 O(1)。

    算法的时间复杂度和空间复杂度合称为算法的复杂度。

    算法和算法描述

    【算法的定义】算法是规则的有限集合,是为解决特定问题而规定的一系列操作。也就是说算法是处理步骤的序列集合。 【算法的特性】 :有限性、确定性、可行性和输入输出特性。 【算法设计的要求】 算法需要保证正确性、可读性、健壮性和高效率低存储量等问题。

    算法的正确性是不言而喻的,正确可分为三个层次:1、一般数据能得出要求结果;2、精心选择的边界数据也能得到要求结果;3、所有合法数据都能得到要求结果。一层比一层要求更高。

    可读性就是便于理解和交流,有助于合作开发。 ​ 健壮性就是耐折腾,非法操作时也不至于瘫痪。 ​ 高效率和低存储即:执行效率高,存储容量少,但往往需要折中。

     

  • 相关阅读:
    Eclipse护眼技巧
    Maven搭建SSM框架(Spring+SpringMVC+MyBatis)
    Spring之各jar包作用
    Maven新建web项目jsp报错
    js金额转大写(万元为单位)
    linux常用指令
    ie8下数组不支持indexOf方法解决方法
    string,stringBuffer,stringBuilder的比较
    input限制输入
    spring boot Mybatis --maven
  • 原文地址:https://www.cnblogs.com/ST-2017/p/10280025.html
Copyright © 2011-2022 走看看