数据结构与算法分析(c++版) #1

一、什么是数据结构?

        要想知道什么是数据结构,首先要了解一些数据类型。

         类型(type):是一组值得集合。例如布尔类型由true和false这两个值组成,整数也构成类型。

       数据类型(data type):是指一种类型和定义在该类型上的一组操作。例如,一个整数变量是整数数据类型的一个成员,而加法是定义在整数数据类型上的一种操作。

       抽象数据类型(abstract data type,简称ADT):是指数据结构作为一个软件组件的实现。ADT的接口用一种类型和该类型上的一组操作来定义,每个操作由它的输入和输出定义。ADT并不会指定数据类型如何实现,这些实现谢姐对于ADT的用户是隐藏的,并且通过封装来阻止外部对它的访问。

       数据结构(data structure)就是ADT的实现。

      下面用一张图把上面讲过的关系概括出来:数据结构与算法分析(c++版) #1_第1张图片

        其中ADT中个提出的数据项的定义是它的逻辑形式,而数据结构中队数据项的实现是它的物理形式。

        个人理解为:ADT接口定义了要做什么事情,然后数据结构就是要如何做每一件事情。


        比ADT更高级的抽象是:对描述程序设计(即对象与类的相互关系)的抽象,这又被成为设计模式

二、选择数据结构

        1、分析问题,确定资源限制;

        2、确定该问题需要什么操作,衡量各种数据结构的资源限制;

        3、选出最合适该问题的数据结构。


        切记:选择数据结构时必须以数据为中心。


三、算法的性质

        1、正确性

        2、具体步骤

        3、确定性

        4、有限性

        5、可终止性


四、问题、算法和程序

        1、问题是一个函数,是从输入到输出的一种映射;

        2、算法是结局问题,有具体步骤的方法;

        3、程序是算法在计算机程序设计语言的实现。


五、增长率的比较

        1、渐进分析:当输入规模很大,或者数大道极限(微积分意义上)时,对一种算法的研究。即估算一种算法的时间或者其他待见是,经常忽略运行时间函数的系数。但也有局限性。

        2、上限:表示算法可能出现的最高增长率。表达方式为T(n)在集合O(f(n))中。

        3、下限:描述算法为某类数据输入时所需的最小资源。表达方式为T(n)在集合Ω(f(n))中。

        4、当上限和下限相同时,可以用θ表示。直接说T(n)为θ(f(n))。

        5、常用的时间复杂度所耗费的时间从小到大依次是:

             O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

         

你可能感兴趣的:(数据结构与算法)