ACCESS基础知识笔记整理---数据结构与算法
算法的时间复杂度指的是算法在计算机内执行时所需要时间的度量;与时间复杂度类似,空间复杂度是指算法在计算机类执行所需要存储空间的度量。时间复杂度是指一个算法执行时间的相对度量,而空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量。时间和空间的效率往往是一对矛盾,很难做到两全。但是,这个不代表所有的情况,时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。
一般来说,一中数据的逻辑结构根据其需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。采用不同的的存储结构,其数据的处理效率是不同的。
结构化程序设计方法主要原则是:自顶向下,逐步求精,模块化,限制使用goto语句。
可复用性是指软件元素不加修改和稍加修改可在不同的软件开发的过程中重复使用的性质。软件的可复用性是软件工程追求的目标之一,是提高软件生产效率的最主要方法。面向对象的程序设计具有可复用性的优点。
面向对象的设计方法与传统的面向过程方法有本质的不同,基本原理是,使现实世界的概念抽象的思考问题,从而自然而然的解决问题。它强调模拟现实世界中的概念而不是强调算法,它鼓励开发者在软件开发的绝大部分中都应用领域的概念去思考。
软件是程序、数据与相关文档的集合,相对于计算机硬件而言,软件是逻辑产品而不是物理产品,是计算机无形的部分。
软件工程包括3个要素,即方法、工具和过程。
数据库是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,可被各个应用程序共享。数据库中的数据具有“集成”,“共享”的特点。
由于数据的集成性使得数据可以被多个应用程序共享,特别是在网路发达的今天,数据库与网络的结合扩大了数据库的应用范围,所以数据库技术的根本问题是解决数据的共享的问题。
数据库管理系统是一种操纵和管理数据的大型软件,它是系统软件,负责数据中的数据组织、数据操纵、数据维护、控制和数据服务等。数据库管理系统是数据库系统的核心。
数据处理的最小单位是数据项;由若干数据项组成数据元素;数据是指能够被计算机识别、存储加工处理的信息载体;数据结构是指数据之间的相关关系和数据运算。
ACCESS命名规则是1、长度为1-64个字符;2、可以包含字母、汉字、数字、空格和其它字符;3、不能包含句号、感叹号、方括号和重音符号。
使用日期数据作为条件可以方便的限定查询的时间范围,书写这类条件时应注意,日期常量要用英文“#”号括起来。
“特殊效果”为控件的格式属性,不是窗体的数据属性。
根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型;线性结构与非线性结构。
如果一个非空的数据结构满足以下两个条件:1、有且只有一个根节点;2、每一个节点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。
栈是限定在一端进行插入与删除操作的线性表。
栈是按照:“先进后出”或“后进先出”的原则组织数据的,因此栈也被称为“先进后出”表或“后进先出”表。
计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。
算法的基本要素:
算法中对数据的运算和操作
一个算法由两种基本要素组成:一是对数据对象的运算和操作;二是算法的控制结构。
在一般的计算机系统中,基本的运算和操作有以下4类:算术运算、逻辑运算、关系运算和数据传输。
算法的控制结构:算法中各操作之间的执行顺序称为算法的控制结构。
描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等。一个算法一般都可以用顺序、选择、循环3种基本控制结构组合而成。计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。
算法的基本特征:可行性、确定性、有穷性、拥有足够的情报。
栈及线性链表
栈及其基本运算
1.栈的基本概念
栈是限定只在一端进行插入与删除的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。当表中没有元素时称为空栈。栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最
先被插入的元素,从而也是最后才能被删除的元素。栈是按照"先进后出"或"后进先出"的原则组织数据的。
2.栈的顺序存储及其运算
用一维数组S(1∶m)作为栈的顺序存储空间,其中m为最大容量。
在栈的顺序存储空间S(1∶m)中,S(bottom)为栈底元素,S(top)为栈顶元素。top=0表示栈空;top=m表示栈满。
栈的基本运算有三种:入栈、退栈与读栈顶元素。
(1)入栈运算:入栈运算是指在栈顶位置插入一个新元素。首先将栈顶指针加一(即top加1),然后将新元素插入到栈顶指针指向的位置。当栈顶指针已经指向存储空间的最后一个位置时,说明栈空间已满,不可能再进行入栈操作。这种情况称为栈"上溢"错误。
(2)退栈运算:退栈是指取出栈顶元素并赋给一个指定的变量。首先将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量,然后将栈顶指针减一(即top减1)。当栈顶指针为0时,说明栈空,不可进行退栈操作。这种情况称为栈的"下溢"错误。
(3)读栈顶元素:读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它赋给一个变量,因此栈顶指针不会改变。当栈顶指针为0时,说明栈空,读不到栈顶元素。
小技巧:栈是按照"先进后出"或"后进先出"的原则组织数据,但是出栈方式有多种选择,在考题中经常考查各种不同的出栈方式。
线性链表的基本概念
在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域,另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。
链式存储方式既可用于表示线性结构,也可用于表示非线性结构。
(1)线性链表
线性表的链式存储结构称为线性链表。
在某些应用中,对线性链表中的每个结点设置两个指针,一个称为左指针,用以指向其前件结点;另一个称为右指针,用以指向其后件结点。这样的表称为双向链表。
(2)带链的栈
栈也是线性表,也可以采用链式存储结构。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为可利用栈。
在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。
冒泡排序法的平均执行时间是O(n2),而快速排序法的平均执行时间是O(nlog2n)。
冒泡排序法和快速排序法都属于交换类排序法。
(1)冒泡排序法
首先,从表头开始往后扫描线性表,逐次比较相邻两个元素的大小,若前面的元素大于后面的元素,则将它们互换,不断地将两个相邻元素中的大者往后移动,最后最大者到了线性表的最后。
然后,从后到前扫描剩下的线性表,逐次比较相邻两个元素的大小,若后面的元素小于前面的元素,则将它们互换,不断地将两个相邻元素中的小者往前移动,最后最小者到了线性表的最前面。
对剩下的线性表重复上述过程,直到剩下的线性表变空为止,此时已经排好序。
在最坏的情况下,冒泡排序需要比较次数为n(n-1)/2。
(2)快速排序法
它的基本思想是:任取待排序序列中的某个元素作为基准(一般取第一个元素),通过一趟排序,将待排元素分为左右两个子序列,左子序列元素的排序码均小于或等于基准元素的排序码,右子序列的排序码则大于基准元素的排序码,然后分别对两个子序列继续进行排序,直至整个序列有序。
二分查法只适用于顺序存储的有序表。在此所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)。
这个过程一直进行到查成功或子表长度为0为止。
对于长度为n的有序线性表,在最坏情况下,二分查只需要比较log2n次。
面向对象方法涵盖对象及对象属性与方法、类、继承、多态性几个基本要素。
(1)对象
通常把对对象的操作也称为方法或服务。
属性即对象所包含的信息,它在设计对象时确定,一般只能通过执行对象的操作来改变。属性值应该指的是纯粹的数据值,而不能指对象。
操作描述了对象执行的功能,若通过信息的传递,还可以为其他对象使用。
对象具有如下特征:标识惟一性、分类性、多态性、封装性、模块独立性。
(2)类和实例
类是具有共同属性、共同方法的对象的集合。它描述了属于该对象类型的所有对象的性质,而一个对象则是其对应类的一个实例。
类是关于对象性质的描述,它同对象一样,包括一组数据属性和在数据上的一组合法操作。
(3)消息
消息是实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。
一个消息由三部分组成:接收消息的对象的名称、消息标识符(消息名)和零个或多个
参数。
(4)继承
广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。
继承分为单继承与多重继承。单继承是指,一个类只允许有一个父类,即类等级为树形结构。多重继承是指,一个类允许有多个父类。
(5)多态性
对象根据所接收的消息而做出动作,同样的消息被不同的对象接收时可导致完全不同的行动,该现象称为多态性。access计算机二级考什么