• 数据结构与算法基础概述


    瑞士计算机科学家Niklaus Wirth  教授提出:算法+数据结构=程序

    算法:对数据运算的描述。

    数据结构:数据的逻辑结构和存储结构

    程序设计:针对实际问题选择一种好的数据结构和设计一个好的算法。

    要设计出一个好的程序,就必须有好的算法。好的算法在很大程度上取决于描述实际问题的数据结构,必须建立在研究数据的特性及数据之间存在的关系的基础之上。

    数据(data):描述客观事物的符号集合;

    数据元素(data element):数据的基本单位,有时一个数据元素可由若干个数据项组成;

    数据项(也称字段、域、属性):具有独立含义的最小标识单位;

    数据对象(data object):具有相同性质的数据元素的集合。

    数据结构(data):带有结构的数据元素的集合。

    一般包括三方面内容:

    1.数据的逻辑结构。数据元素之间的逻辑(或抽象)关系

      ①线性结构

        数据元素(结点)之间存在着一对一的关系,且结构中仅有一个开始结点和一个终端结点,其余结点都是仅有一个    直接前趋和一个直接后继。如线性表,栈和队列。

      ②非线性结构

        数据元素之间存在着一对多或多对多的关系,即一个结点可能有多个直接前趋和多个后继。如树,图,网状。

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

     两个结构

      ①顺序存储结构:向量中各元素按其逻辑关系”顺序“存储。

      ②链式存储结构:向量中各元素通过指针连接存储在内存中。

     四种基本的存储方法实现

      ①顺序存储方法:把逻辑上相邻的结点存储在物理位置上也相邻的连续存储单元里;

      ②链接存储方法:用一组不一定连续的存储单元存储逻辑上相邻的元素,元素间的逻辑关系是由附加的指针域表示的;

      ③索引存储方法:在存储元素信息的同时,还建立附加的索引表。表中的索引项一般形式是:(关键字,地址)。关键字是能唯一标识一个元素的一个数据项或多个数据项的组合。

      ④散列存储方法:根据元素的关键字直接计算出该元素的存储地址。

    3.数据的运算。对数据元素施加的操作(行为)

    常用的运算:检索、插入、删除、更新、排序

    数据类型(data type):一个值的集合和定义在这个值集上的一组操作的总称。

    按”值“的不同特性划分

      ①原子类型(非结构类型):其值不可分解,例如基本类型(整型、实型、字符型和枚举型)以及指针类型和空类型等简单类型

      ②结构类型:其值可由若干个分量(或成分)按某种结构组成,它的分量可以是非结构型的,也可以是结构型的。例如数组、结构等。

    抽象数据类型(Abstract Data Type,ADT):是抽象数据的组织和与之相关的操作。例如并、交、差运算

    算法:对特定问题的求解步骤的一种描述,指令的有限序列。

    特性

      - 有穷性:算法在执行有穷步后能结束

      - 确定性:每一指令有确切的含义,无二义

      - 可行性:每一操作都可以通过已经实现的基本运算执行有限次来实现

      - 输入:零个或多个人输入

      - 输出:一个或多个输出

     算法的评价标准

    (1)正确性:对于一切合法的输入数据,该算法经过有限时间的执行都能得到正确的结果;

    (2)时间复杂性:执行算法所耗费的时间;

    (3)空间复杂性执行算法所耗费的存储空间;

    (4)易于理解、易于编程、易于调试。

    时间复杂度

      运行时间=算法中每条语句执行时间之和

      每条语句执行时间=频度*语句执行一次所需时间

      但是不同计算机系统执行一次基本操作的时间是千差万别,不能用一个统一的标准来衡量

      (渐进)时间复杂度:T(n)=O(f(n))

        n-问题规模

      

  • 相关阅读:
    MySQL聚集索引和非聚集索引
    如何避免表单重复提交
    i++为什么是线程不安全的
    TIME_WAIT和CLOSE_WAIT
    TCP三次握手四次挥手
    get和post区别
    Session存储
    Session和Cookie的区别和联系
    Servlet与线程安全
    AQS
  • 原文地址:https://www.cnblogs.com/jingchi/p/16033139.html
Copyright © 2020-2023  润新知