zoukankan      html  css  js  c++  java
  • 2019-09-06

    1.1

    计算机解决客观世界的问题:输入数据,数据存储,数据处理,输出结果

    数据结构与算法:主要解决数据存储与数据处理

    一般情况下,对于给定的问题,人们需要抽象出解决问题所需要的数据模型,收集,整理相关的原始数据,在此基础上研究其数据结构与算法,然后根据选定的程序设计语言,把数据结构与算法转换成计算机可理解的程序,并上机运行,最后得出人们希望的计算结果。

    1.2 基本概念和术语

    数据Data:对客观事物的符号表示,在计算机科学中是指所有能输入到计算机并被计算机程序处理的符号总称,数据是计算机加工的原料;这里说的数据其实就是符号,而且这些符号必须具备两个前提:可以通过某种方法输入到计算机之中 & 能被计算机存储和处理。

    数据项Data Item:是数据不可分割的最小单位,如:身高170cm,此处的170就是一个数据项,如果进一步分割成1,7,0就没有实际意义了;这里说的数据项,在数据库系统中也被称为字段。

    数据元素Data Element:是数据的基本单位,通常作为一个整体进行考虑和处理。 一个数据元素可由若干个数据项组成。数据元素也就是数据库系统中所说的记录。

    数据对象Data Object:性质相同的数据元素的集合,是数据的一个子集。这里所说的”性质相同“是指所有的数据元素都具有相同的数据类型。数据对象也就是要研究或处理的对象。如:做一个学生信息管理系统,研究的对象就是被管理的学生,由于被管理的学生不止一个,每个学生用一个数据元素表示。这100个数据元素的集合就是该系统的数据对象。

    数据结构Data Structure:数据对象中各数据元素及其相互关系的集合。四类基本逻辑结构:集合结构,线性结构,层次结构,网状结构;层次结构是网状结构的特例,线性结构是层次结构的特例。时常把层次结构和网状结构统称为非线性结构。  数据结构中的数据指我们关心是数据对象中的数据元素,结构指这些数据元素之间的关系。

    数据结构的形式化表示:二元组(K,R)第一元K表示数据结构中所有元素的集合,第二元R给出所有元素具有的二元关系的集合,通常对每个二元关系分别进行讨论,所以直接用R表示这种二元关系,该二元关系是有序对的集合,又称为序偶的集合,每个有序对(序偶)是用一对尖括号括起来的,具有前驱和后聚关系的两个元素。   在线性结构和树状结构中,若元素个数为n,则有序对个数必然为n-1;而在网状结构中有序对的个数又称为向边数可能大于,等于,或小于n-1。

    数据的逻辑结构:从逻辑上探讨的 面向问题的结构                                                     数据的存储结构:面向计算机的 而非面向问题,四种方法:顺序存储结构,链式存储结构,索引存储结构,散列存储结构                      数据的物理结构:操作系统

    两条相反的有向边也可以用一条无向边来代替,隐含着该无向边是双向的,即连接的两个顶点互为前驱和后继。                          若存在<x,y>这个序偶,则必然存在<y,x>这个序偶与之对应,为了简化,把这两个对称序偶用一个无序对(x,y)来代替。                     无序对的集合中每个元素为用圆括号括起来的无序对,对应图形中的一条无向边,由无向边构成的图形称为无向图,反之为有向图。

    1.3算法

    高级程序语言编写的程序在计算机上运行时所消耗的时间大致取决于以下因素:1)算法采用的策略,方法;2)编译产生的代码质量;3)问题的规模(待处理的数据量);4)机器执行指令的速度。一个程序的运行时间依赖于算法的好坏和问题的规模大小。

    一个算法是由控制结构(顺序,分支和循环三种)和原操作(指固有数据类型的操作),算法时间取决于两者的综合效果。为了便于比较同一问题的不同算法,通常做法是:从算法中选取一种对于所研究问题来说是基本操作的原操作,以该基本操作重复执行的次数作为算法的时间量度。

    语句的频度Frequency Count指的是语句重复执行的次数

    时间复杂度O(1)常量阶,O(n)线性阶,O(n^2)平方阶,O(logn)对数阶,O(n^2)指数阶

    算法 的空间复杂度取决于:一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的空间以及运行过程中临时占用的存储空间。

    1.4抽象数据类型

    抽象数据类型不仅指那些已经定义并实现的数据类型,还可以是自己定义的数据类型,还包括定义在该模型的一组操作。体现了程序设计中问题分解,抽象和信息隐藏的特性。抽象数据类型把实际生活中的问题分解为多个小且容易处理的问题,然后建立一个计算机能处理是数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐藏起来。抽象数据类型是一个数据结构以及定义在该结构上的一组操作的总称。

    抽象数据类型标准格式:

    ADT抽象数据类型名                                                                               Data:数据元素之间的逻辑关系的定义                                                                               Operation:前置条件/输入/功能/输出/后置条件                                                                  endADT

    2.2 堆栈

    Stack是一种运算受限的线性表,其限制是只允许在表的一端进行插入和删除运算。对栈进行运算的一段为栈顶(top),栈顶的第一个元素被称为栈顶元素,相对的,把另一端成为栈底(bottom)。向一个栈插入新元素又称为进栈或入栈(Push):把该元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称出栈,弹栈或退栈(Pop)它是把栈顶元素删除掉,使其下面的相邻元素成为新的栈顶元素。由于栈 的删除和插入运算仅在栈顶一端进行,后进栈的元素必定先出栈,所以又把栈称为后进先出(Last In First Out,LIFO)表。堆栈是线性表的特例 。

  • 相关阅读:
    求助 大家帮忙激励下我吧
    实体培训,特别是对于学历教育中教学理论的一些总结
    天轰穿c#趣味编程系列视频 vs2005/2008 winform实例入门 第二集 学习技巧风暴
    感谢老婆的支持我永远爱你,亲爱的梅
    早上起床晚了,差点迟到,两集视频已经做好
    我带这个班最近两次的作业
    辛辛苦苦几十年,一朝回到解放前我以及我的部分亲人都平安
    天轰穿c#趣味编程系列视频 vs2005/2008 winform实例入门 第一集
    如果有媒体的朋友建议看下这个帖子
    无聊的盗版问题
  • 原文地址:https://www.cnblogs.com/karenaqi/p/11480294.html
Copyright © 2011-2022 走看看