• 数据结构绪论



    1.什么是数据结构

    一般来说,用计算机解决一个具体问题时候,首先要具体问题抽象出一个适当的数学模型,然后设计算法,编程序,进行调试,直到得到最终的答案。现在高级编程语言会将一些底层需要的数据结构进行封装,比如java的hashmap,以前的1.7版本,采用了数组和链表的组合方式,为了更加的追求效率,采用了红黑树的方式,这里面也是数据结构的运用,导致了效率的增强。再比如redis里面的常见的几种数据类型,底层实现还是通过数据结构的完成,所以了解数据结构是非常重要的一环。

    2.专业术语:

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

    数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

    数据项:有独立含义的数据最小单位,也称域。

    数据类型:是一个值的集合和定义在此集合上一组操作的总称。

    抽象数据类型:ADT,指一个数学模型以及定义在该模型上的一组操作。通常用数据对象、数据关系、基本操作集这样的三元组来表示。有数据抽象和数据封装两个重要特性。

    数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。包括(逻辑结构、存储结构和数据的运算)。

    数据的逻辑结构:指数据元素之间的逻辑关系。包括集合、线性结构、树形结构、图状结构或网状结构。

    数据的存储结构:指数据结构在计算机中的表示,也成物理结构。主要有顺序存储、连接存储、索引存储、散列存储。

    算法:对特定问题求解步骤的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。有5个重要特性(有穷性、确定性、可行性、输入、输出)

    算法设计的要求:正确性、可读性、健壮性、效率与低存储量需求。

    时间复杂度:一般情况下,算法中基本操作的重复次数是问题规模n的某个函数f(n),算法的时间度量记作T(n)=O(f(n)),表示随着问题规模n的增大,算法执行时间增长率和f(n)的增长率相同,称为时间复杂度。

    空间复杂度:S(n)定义为该算法所耗费的存储空间,是问题规模n的函数。

    数据结构的两个层次

    逻辑结构
    数据元素间抽象化的相互关系,与数据的存储无关,独立于计算机,它是从具体问题抽象出来的数学模型。

    存储结构(物理结构):
    数据元素及其关系在计算机存储器中的存储方式。

    3.逻辑结构

    逻辑结构

    集合——数据元素间除“同属于一个集合”外,无其它关系

    线性结构——一个对一个,如线性表、栈、队列
    树形结构——一个对多个,如树
    图形结构——多个对多个,如图

    4.存储结构

    顺序存储结构——借助元素在存储器中的相对位置来表示
    数据元素间的逻辑关系
    链式存储结构——借助指示元素存储地址的指针表示数据
    元素间的逻辑关系

    数据类型
    定义:在一种程序设计语言中,变量所具有的数据种类 

    C语言:
     基本数据类型: char int float double void
    抽象数据类型
    更高层次的数据抽象

    由用户定义,用以表示应用问题的数据模型

    由基本的数据类型组成, 并包括一组相关的操作
    抽象数据类型

    抽象数据类型可以用以下的三元组来表示:

    ADT = (D,S,P)
    
    数据对象   D上的关系集    D上的操作集
                    
    
    ADT抽象数据类型名{ 
            数据对象:<数据对象的定义>
            数据关系:<数据关系的定义> 
            基本操作 :<基本操作的定义> 
        } ADT抽象数据类型名
     
    

    算法:

    算法的特性:
    输入:有0个或多个输入
    输出:有一个或多个输出(处理结果)
    确定性:每步定义都是确切、无歧义的
    有穷性:算法应在执行有穷步后结束
    可行性:算法中的所有操作都可以通过已经实现的基本操作运算执行

    算法分析:时间复杂度

    算法中基本语句重复执行的次数是问题规模n的某个函数f(n),算法的时间量度记作:
    T(n)=O(f(n))

    表示随着n的增大,算法执行的时间的增长率和f(n)的增长率相同,称渐近时间复杂度。

    分析算法时间复杂度的基本方法:
    找出语句频度最大的那条语句作为基本语句
    计算基本语句的频度得到问题规模n的某个函数f(n)
    取其数量级用符号“O”表示
    时间复杂度是由嵌套最深层语句的频度决定的

    5.总结

    好多概念还是需要自己看书理解,书面语抽象,虽然我大二学的数据结构,我还是觉得严蔚敏的数据结构对入门数据结构不够友好,不过有好多优秀的博客可以参考。

  • 相关阅读:
    程序猿和产品狗
    编写一个友元函数,求两个日期之间相差的天数
    集合的模拟实现(类模板)
    友元很简单2016final
    攻防世界-parallel-comparator-200
    web-GXYCTF2019 StrongestMind
    破解010Editor
    2020第三届江西省高校网络安全技能大赛线下解题赛部分wp
    pwn-EasyHeap(House of spirit)
    web-2020 ciscn littlegame(原型链污染)
  • 原文地址:https://www.cnblogs.com/tojian/p/9855792.html
Copyright © 2020-2023  润新知