数据结构基础
数据结构最基础的十大算法

数据结构最基础的十大算法数据结构是计算机科学中的重要分支,它研究如何组织和存储数据以便于访问和修改。
在数据结构中,算法是解决问题的关键。
下面将介绍数据结构中最基础的十大算法。
1. 线性搜索算法线性搜索算法是最简单的算法之一,它的作用是在一个列表中查找一个特定的元素。
该算法的时间复杂度为O(n),其中n是列表中元素的数量。
2. 二分搜索算法二分搜索算法是一种更高效的搜索算法,它的时间复杂度为O(log n)。
该算法要求列表必须是有序的,它通过将列表分成两半来查找元素,直到找到目标元素为止。
3. 冒泡排序算法冒泡排序算法是一种简单的排序算法,它的时间复杂度为O(n^2)。
该算法通过比较相邻的元素并交换它们的位置来排序列表。
4. 快速排序算法快速排序算法是一种更高效的排序算法,它的时间复杂度为O(nlog n)。
该算法通过选择一个基准元素并将列表分成两部分来排序列表。
5. 插入排序算法插入排序算法是一种简单的排序算法,它的时间复杂度为O(n^2)。
该算法通过将每个元素插入到已排序的列表中来排序列表。
6. 选择排序算法选择排序算法是一种简单的排序算法,它的时间复杂度为O(n^2)。
该算法通过选择最小的元素并将其放在列表的开头来排序列表。
7. 堆排序算法堆排序算法是一种更高效的排序算法,它的时间复杂度为O(n log n)。
该算法通过将列表转换为堆并进行排序来排序列表。
8. 归并排序算法归并排序算法是一种更高效的排序算法,它的时间复杂度为O(n log n)。
该算法通过将列表分成两部分并将它们合并来排序列表。
9. 哈希表算法哈希表算法是一种高效的数据结构,它的时间复杂度为O(1)。
该算法通过将键映射到哈希表中的位置来存储和访问值。
10. 树算法树算法是一种重要的数据结构,它的时间复杂度取决于树的深度。
树算法包括二叉树、AVL树、红黑树等。
以上是数据结构中最基础的十大算法,它们在计算机科学中有着广泛的应用。
数据结构基础知识整理

数据结构基础知识整理*名词解释1、数据:是信息的载体,能够被计算机识别、存储和加工处理。
*2、数据元素:是数据的基本单位,也称为元素、结点、顶点、记录。
一个数据元素可以由若干个数据项组成,数据项是具有独立含义的最小标识单位。
*3、数据结构:指的是数据及数据之间的相互关系,即数据的组织形式,它包括数据的逻辑结构、数据的存储结构和数据的运算三个方面的内容。
*4、数据的逻辑结构:指数据元素之间的逻辑关系,即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
*5、数据的存储结构:指数据元素及其关系在计算机存储器内的表示。
是数据的逻辑结构用计算机语言的实现,是依赖于计算机语言的。
*6、线性结构:其逻辑特征为,若结构是非空集,则有且仅有一个开始结点和一个终端结点,并且其余每个结点只有一个直接前趋和一个直接后继。
*7、非线性结构:其逻辑特征为一个结点可能有多个直接前趋和直接后继。
*8、算法:是任意一个良定义的计算过程,它以一个或多个值作为输入,并产生一个或多个值作为输出;即一个算法是一系列将输入转换为输出的计算步骤。
*9、算法的时间复杂度T(n):是该算法的时间耗费,它是该算法所求解问题规模n趋向无穷大时,我们把时间复杂度T(n)的数量级(阶)称为算法的渐近时间复杂度。
*10、最坏和平均时间复杂度:由于算法中语句的频度不仅与问题规模n有关,还与输入实例等因素有关;这时可用最坏情况下时间复杂度作为算法的时间复杂度。
而平均时间复杂度是指所有的输入实例均以等概率出现的情况下,算法的期望运行时间。
*11、数据的运算:指对数据施加的操作。
数据的运算是定义在数据的逻辑结构上的,而实现是要在存储结构上进行。
*12、线性表:由n(n≥0)个结点组成的有限序列。
其逻辑特征反映了结点间一对一的关系(一个结点对应一个直接后继,除终端结点外;或一个结点对应一个直接前趋,除开始结点外),这是一种线性结构。
*13、顺序表:顺序存储的线性表,它是一种随机存取结构。
数据结构基础知识题库

数据结构基础知识题库1. ()是性质相同的数据元素的集合,是数据的子集。
[单选题]A.数据元素B.数据对象(正确答案)C.数据结构D.数据项2. 把数据存储到计算机中,并具体体现数据元素间的逻辑结构称为()。
[单选题] A.物理结构(正确答案)B.逻辑结构C.算法的具体实现D.给相关变量分配存储单元3. 从n个数中选取最大元素()。
[单选题]A.基本操作是数据元素间的交换B.算法的时间复杂度是O(n2)C.算法的时间复杂度是O(n)(正确答案)D.需要进行(n+1)次数据元素间的比较4. 数据的()结构与所使用的计算机无关。
[单选题]A.逻辑(正确答案)B.物理C.存储D.逻辑与存储5. 数据的物理结构()。
[单选题]A.与数据的逻辑结构无关B.仅仅包括数据元素的表示C.只包括数据元素间关系的表示D.包括数据元素的表示和关系的表示(正确答案)6. 数据结构中,与所使用的计算机无关的是数据的()结构。
[单选题] A.物理B.存储C.逻辑与物理D.逻辑(正确答案)7. 数据元素是数据的基本单位,它()。
[单选题]A.只能有一个数据项组成B.至少有二个数据项组成C.可以是一个数据项也可以由若干个数据项组成(正确答案)D.至少有一个数据项为指针类型8. 算法的时间复杂度与()有关。
[单选题]A.所使用的计算机B.计算机的操作系统C.算法本身(正确答案)D.数据结构9. 同一种逻辑结构()。
[单选题]A.只能有唯一的存储结构B.可以有不同的存储结构(正确答案)C.只能表示某一种数据元素之间的关系D.以上三种说法均不正确10. 线性结构中数据元素的位置之间存在()的关系。
[单选题] A.一对一(正确答案)B.一对多C.多对多D.每一个元素都有一个直接前驱和一个直接后继11. 树形结构中数据元素的位置之间存在()的关系。
[单选题] A.一对一B.一对多(正确答案)C.多对多D.每一个元素都有一个直接前驱和一个直接后继12. 图形结构中数据元素的位置之间存在()的关系。
数据结构基础知识

复习提纲第一章数据构造概述根本概念与术语〔P3〕1.数据构造是一门研究非数值计算程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科.2.数据是用来描述现实世界的数字,字符,图像,声音,以及能够输入到计算机中并能被计算机识别的符号的集合2.数据元素是数据的根本单位3.数据对象一样性质的数据元素的集合4.数据构造三方面容:数据的逻辑构造.数据的存储构造.数据的操作.〔1〕数据的逻辑构造指数据元素之间固有的逻辑关系.〔2〕数据的存储构造指数据元素及其关系在计算机的表示( 3 ) 数据的操作指在数据逻辑构造上定义的操作算法,如插入,删除等.5.时间复杂度分析--------------------------------------------------------------------------------------------------------------------1、名词解释:数据构造、二元组2、根据数据元素之间关系的不同,数据的逻辑构造可以分为集合、线性构造、树形构造和图状构造四种类型。
3、常见的数据存储构造一般有四种类型,它们分别是___顺序存储构造_____、___链式存储构造_____、___索引存储构造_____和___散列存储构造_____。
4、以下程序段的时间复杂度为___O(N2)_____。
int i,j,*;for(i=0;i<n:i++) n+1for(j=0;j<n;j++) n+1*+=i;------------------------------------------------------------------------------------------------------------------第二章线性表1.顺序表构造由n(n>=0)个具有一样性质的数据元素a1,a2,a3……,an组成的有穷序列//顺序表构造#define MA*SIZE 100typedef int DataType;Typedef struct{DataType items[MA*SIZE];Int length;}Sqlist,*LinkList;2.单链表(1)链表结点构造//链表的节点构造Typedef struct Node{int data;struct Node *ne*t;} Lnode,*Pnode,*LinkList;(2)结点遍历void TraverseList(LinkList t){LinkList p;while(t){p=t;t=t->ne*tfree(p);}}(3)链表操作算法:初始化、插入、输出、删除void InitList(LinkList *h){*h=(LinkList)malloc(sizeof(LNode));if(!h){print("初始化错误〞);return;}(*h)->ne*t=NULL;}void InsertList(LinkList h,int pos,datatype *){ LinkList p=h,q;int i=0;while(p&&i<pos-1){p=p->ne*t;i++;}if(!p||i>pos-1)print("插入位置出错!!〞);InitList(&q);q->ne*t=NULL;q->data=*;}void DeleteList(LinkList h,int pos){LinkList p=h,q;int i=0;while(p&&i<pos-1){p=p->ne*t;i++;}if(!p||i>pos-1){cout<<〞删除位置错误〞;return;}q=p->ne*t;p->ne*t=q->ne*t;free(q);}-----------------------------------------------------------------------------------------------------------------1、线性表中,第一个元素没有直接前驱,最后一个元素没有直接后驱。
《数据结构基础》课程标准--64课时

《数据结构基础》课程标准--64课时数据结构基础课程标准--64课时一、课程目标本课程旨在帮助学生了解数据结构和算法的基础知识,掌握基本的数据结构和算法,并能够灵活应用于实际编程中。
二、课程安排本课程共分为64课时,按照以下内容安排:三、课程内容1.基本概念及绪论- 数据结构概述- 算法概述- 算法复杂度分析和算法效率分析2.线性表- 线性表的定义及表示- 线性表的顺序存储结构和链式存储结构3.栈和队列- 栈和队列的定义及基本操作- 栈和队列的应用4.串- 串的定义及基本操作- 串的匹配算法5.树- 树的定义及基本术语- 树的遍历算法6.图- 图的定义及基本术语- 图的遍历算法7.查找- 查找的定义及基本概念- 顺序查找- 二分查找- 哈希查找8.排序- 排序的定义及基本概念- 冒泡排序- 插入排序- 选择排序- 快速排序- 归并排序- 堆排序9.动态规划- 动态规划的定义及基本思想- 动态规划的高楼抛鸡蛋问题10.贪心- 贪心的定义及基本思想- 贪心算法的基本模型及常用应用11.暴力搜索和分治- 暴力搜索的定义及基本思想- 分治算法的定义及基本思想四、教学方法本课程教学采用讲授和实践相结合的方式,充分发挥学生的主动性和创造性,利用实例和案例加深学生对数据结构和算法的理解。
五、考试要求本课程考试包括平时作业成绩和期末考试成绩,期末考试成绩占总成绩的70%。
考试内容涵盖课程所讲内容和实际应用。
六、参考书目- 《数据结构与算法分析》- 《数据结构(C语言版)》- 《算法导论》。
计算机基础知识:数据结构基础知识

计算机基础知识:数据结构基础知识
1.数据结构
数据结构是指相互之间存在一定关系的数据元素的集合,即数据结构是一个二元组
Data Structure = (D, R),其中D是数据元素的集合,R是D上关系的集合。
按照视点的
不同,数据结构分为逻辑结构和存储结构。
2.数据结构的分类
(1)数据逻辑结构
数据的逻辑结构是指数据元素之间逻辑关系的整体。
根据数据元素之间逻辑关系的不同,数据结构分为四类:
1) 集合:数据元素之间就是“属于同一个集合”,除此之外,没有任何关系;
2) 线性结构:数据元素之间存在着一对一的线性关系;
3) 树结构:数据元素之间存在着一对多的层次关系;
4) 图结构:数据元素之间存在着多对多的任意关系。
注意:数据结构分为两类:线性结构和非线性结构。
(2)数据存储结构
数据的存储结构又称为物理结构,是数据及其逻辑结构在计算机中的表示。
通常有两种存储结构:顺序存储结构和链接存储结构。
顺序存储结构的基本思想是:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系是由元素的存储位置来表示的。
链接存储结构的基本思想是:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系是用指针来表示的。
注意:存储结构除了存储数据元素之外,必须存储数据元素之间的逻辑关系。
数据结构基础知识

1.2 数据结构的有关概念
数据:是客观事物的符号表示,在计算机科学中指所有能 输入到计算机并能被计算机程序进行处理的符号总称。它 是计算机加工的“原料”。
在计算机领域,人们把能够被计算机加工的对象,或者能 够被计算机输入、存储、处理和输出的一切信息都叫数据。
数据项:具有独立逻辑含义且不能再分解的数据。
1.1 什么是数据结构
首先通过几个例子来简单认识一下数据结构。 例1:新生入学时,需要注册每个学生的基本信息。
学号 07080901 07080902 07080903 07080904 07080905 07080906 班级 软件 001 软件 001 软件 001 软件 001 软件 001 软件 001 姓名 陈明 李德庆 张基德 邱仲全 徐明明 齐飞鸿 性别 男 男 男 男 女 男 籍贯 广西 广西 山西 海南 广东 贵州 出生年月 1987.7 1988.8 1987.3 1987.5 1986.12 1986.11 民族 汉 壮 侗 汉 汉 苗
数据元素:是数据的基本单位,在程序中通常是作为一个 整体来进行考虑和处理的。是计算机进行输入输出操作的 最小单位。 一个数据元素通常由若干个数据项组成,数 据项 是不可分割的最小单位。
1.2 数据结构的有关概念
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
数据结构:是相互之间存在的一种或多种特定关系的数据元素 的集合。 用公式表示如下: 数据结构=数据元素+关系(结构)
我的电脑
C:/
D:/
F:/
WINDOWS
Program Files
Common Files
Microsoft Office
Word.exe
Excel.exe
数据结构 知识点总结

数据结构知识点总结一、数据结构基础概念数据结构是指数据元素之间的关系,以及对数据元素进行操作的方法的总称。
数据结构是计算机科学中非常基础的概念,它为计算机程序的设计和实现提供了基础架构。
数据结构的研究内容包括数据的逻辑结构、数据的存储结构以及对数据进行操作的算法。
1.1 数据结构的分类数据结构可以根据数据的逻辑关系和数据的物理存储方式进行分类,常见的数据结构分类包括线性结构、树形结构、图结构等。
1.2 数据结构的基本概念(1)数据元素:数据结构中的基本单位,可以是原子类型或者复合类型。
(2)数据项:数据元素中的一个组成部分,通常是基本类型。
(3)数据结构的逻辑结构:指数据元素之间的逻辑关系,包括线性结构、树形结构、图结构等。
(4)数据结构的存储结构:指数据元素在计算机内存中的存储方式,包括顺序存储结构和链式存储结构等。
1.3 数据结构的特点数据结构具有以下几个特点:(1)抽象性:数据结构是对现实世界中的数据进行抽象和模型化的结果。
(2)实用性:数据结构是在解决实际问题中得出的经验总结,是具有广泛应用价值的。
(3)形式化:数据结构具有精确的数学定义和描述,可以进行分析和证明。
(4)计算性:数据结构是为了使计算机程序更加高效而存在的。
二、线性结构线性结构是数据元素之间存在一对一的关系,是一种最简单的数据结构。
常见的线性结构包括数组、链表、栈和队列等。
2.1 线性表线性表是数据元素之间存在一对一的关系的数据结构,可以采用顺序存储结构或者链式存储结构实现。
(1)顺序存储结构:线性表采用数组的方式进行存储,数据元素在内存中连续存储。
(2)链式存储结构:线性表采用链表的方式进行存储,数据元素在内存中非连续存储,通过指针将它们进行连接。
2.2 栈栈是一种特殊的线性表,只允许在一端进行插入和删除操作,这一端称为栈顶。
栈的操作遵循后进先出(LIFO)的原则。
2.3 队列队列也是一种特殊的线性表,允许在一端进行插入操作,另一端进行删除操作,这两端分别称为队尾和队首。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构基础(C语言版)(第2版)【作者】[美] Ellis Horowitz; Sartaj Sahni; SusanAnderson-Freed 著朱仲涛译【从书名】世界著名计算机教材精选【出版社】清华大学出版社【出版时间】2009年03月【关注人次】3596内容简介本书是最经典数据结构教材的最新版本,国内外大多数的同类教材都是以本书为蓝本编写而来的。
本书用C作为描述语言,全面而生动地介绍了数据结构的有关知识,如数组、栈、队列、链表、树和图,以及构成所有软件基础的排序散列技术。
此外,本书还介绍了各种高级或特殊数据结构,如优先级队列、高效二叉查找树、多路查找树等。
本书对大多数算法都给出了计算时间在最优、最差情形下的复杂度分析。
本书不仅可以作为计算机及相关专业本科生“数据结构”课程的教材,也可以作为研究生第一学年的“高等数据结构”课程的教材,同时,本书所介绍的各种算法的C语言实现,对有关专业人员也具有很好的参考价值。
作者简介Ellis Horowitz,是南加州大学计算机与电子工程系的教授。
Horowitz博士已编著了10多本教材,并发表了大量学术论文。
Sartaj Sahni是佛罗里达大学计算机与信息科学系的杰出教授和讲座教授。
Sahni博士已发表300多篇学术研究论文,编著了15本教材。
Susan Anderson-Freed是伊利诺伊卫斯理大学计算机教授。
她的研究领域是数据库管理系统、Web设计与开发。
她毕业于诺伯特大学,并在印第安纳大学获得硕士和博士学位,以及在Bradley大学获得计算机理学地硕士学位。
她从1977年起就供职于伊利诺伊卫斯理大学。
目录第1章基本概念§1.1 概观:系统生命周期§1.2 指针和动态存储分配§1.2.1 指针§1.2.2 动态存储分配§1.2.3 指针隐患§1.3 算法形式规范§1.3.1 综论§1.3.2 递归算法§1.4 数据抽象§1.5 性能分析§1.5.1 空间复杂度§1.5.2 时间复杂度§1.5.3 渐近记号(O,Q,) §1.5.4 实际复杂度§1.6 性能度量§1.6.1 定时§1.6.2 生成测试数据§1.7 参考文献和选读材料第2章数组和结构§2.1 数组§2.1.1 数组的抽象数据类型§2.1.2 c语言的数组§2.2 数组的动态存储分配§2.2.1 一维数组§2.2.2 二维数组§2.3 结构体和联合体§2.3.1 结构体§2.3.2 联合体§2.3.3 结构的内部实现§2.3.4 自引用结构§2.4 多项式§2.4.1 多项式的抽象数据类型§2.4.2 多项式的表示§2.4.3 多项式加法§2.5 稀疏矩阵§2.5.1 稀疏矩阵的抽象数据类型§2.5.2 稀疏矩阵的表示§2.5.3 矩阵转置§2.5.4 矩阵相乘§2.6 多维数组的表示§2.7 字符串§2.7.1 字符串的抽象数据类型§2.7.2 C语言的字符串§2.7.3 模式匹配§2.8 参考文献和选读材料§2.9 补充习题第3章栈与队列§3.1 栈§3.2 动态栈§3.3 队列§3.4 动态循环队列§3.5 迷宫问题§3.6 表达式求值§3.6.1 表达式§3.6.2 后缀表达式求值§3.6.3 中缀表达式转换成后缀表达式§3.7 多重栈与多重队列§3.8 补充习题第4章链表§4.1 单向链表§4.2 用C语言表示单向链表§4.3 链式栈与链式队列§4.4 多项式§4.4.1 多项式表示§4.4.2 多项式加法§4.4.3 销毁多项式§4.4.4 循环链表与多项式§4.4.5 小结§4.5 其它链表操作§4.5.1 单向链表操作§4.5.2 循环链表操作§4.6 等价类§4.7 稀疏矩阵§4.7.1 稀疏矩阵表示§4.7.2 输入稀疏矩阵§4.7.3 输出稀疏矩阵§4.7.4 销毁稀疏矩阵§4.8 双向链表第5章树§5.1 引论§5.1.1 术语§5.1.2 树的表示§5.2 二叉树§5.2.1 二叉树的抽象数据类型§5.2.2 二叉树的性质§5.2.3 二叉树的表示§5.3 遍历二叉树§5.3.1 中序遍历§5.3.2 先序遍历§5.3.3 后序遍历§5.3.4 非递归(循环)中序遍历§5.3.5 层序遍历§5.3.6 不设栈遍历二叉树§5.4 其它二叉树操作§5.4.1 复制二叉树§5.4.2 判断两个二叉树全等§5.4.3 可满足性问题§5.5 线索二叉树§5.5.1 线索§5.5.2 中序遍历线索二叉树§5.5.3 线索二叉树插入结点§5.6 堆§5.6.1 优先级队列§5.6.2 大根堆定义§5.6.3 大根堆插入操作§5.6.4 大根堆删除操作§5.7 二叉查找树§5.7.1 定义§5.7.2 二叉查找树的查找§5.7.3 二叉查找树的插入§5.7.4 二叉查找树的删除§5.7.5 二叉查找树的合并与分裂§5.7.6 二叉查找树的高度§5.8 选拔树§5.8.1 引子§5.8.2 优胜树§5.8.3 淘汰树§5.9 森林§5.9.1 森林转换为二叉树§5.9.2 遍历森林§5.10 不相交集合的表示§5.10.1 引子§5.10.2 合并与查找操作§5.10.3 划分等价类§5.11 二叉树的计数§5.11.1 不同态二叉树§5.11.2 栈置换§5.11.3 矩阵乘法§5.11.4 不同二叉树的数目§5.12 参考文献和选读材料第6章图§6.1 图的抽象数据类型§6.1.1 引子§6.1.2 图的定义和术语§6.1.3 图的表示§6.2 图的基本操作§6.2.1 深度优先搜索§6.2.2 广度优先搜索§6.2.3 连通分量§6.2.4 生成树§6.2.5 重连通分量§6.3 最小代价生成树§6.3.1 Kruskal算法§6.3.2 Prim算法§6.3.3 SoUin算法§6.4 最短路径和迁移闭包§6.4.1 单源点至所有其它节点:边权值非负§6.4.2 单源点至所有其它节点:边权值正负无限制……第7章排序第8章Hash法第9章优先级队列第10章高效二叉查找树第11章多路查找树第12章数字查找结构索引序言《数据结构基础》是一本优秀的数据结构教材,取材全面,难易适中,内容组织合理,详略得当,深入浅出,而且论证逻辑性强,所以广为国内外高校计算机专业选用。
此外,这本英文教材对国内许多数据结构教材的编写也有显著影响。
此中译本是《数据结构基础》c语言版第2版的译本,与第1版相比,新版篇幅扩张很大,内容全面更新,全书覆盖①线性(序)数据类型、②树型数据类型、③网状数据类型,以及④排序算法与⑤查找算法。
基本数据结构包括线性表(数组与链表)、栈与队列、树、图等经典内容,特点为运用抽象数据类型(ADT)观点一一呈现。
另外,书中包含大量符合ANSIC标准的程序,实例丰富,习题众多,并有大量图表。
《数据结构基础(C语言版)第2版》最鲜明的特点是:用几乎一半篇幅,即第8~12章,详细讨论了各种查找表结构及其查找算法,而且内容组织很新颖。
这最后5章既包括查找法的经典内容,如Hash法和AVL树等;也包括数据结构研究的新进展,如分摊复杂度分析等;还包括当前数据结构研究的热点,即各种堆结构。
这部分内容特别适合数据结构提高课程,也特别适合学过基本数据结构的读者自学提高。
以下列出《数据结构基础(C语言版)第2版》有关查找的内容及其编排体系。
文摘第1章基本概念1.1 概观:系统生命周期本书读者应具备扎实的结构化程序设计技能。
要获得这些技能,读者通常应学过程序设计基础一类课程。
这类课程的培养目标就是传授结构化程序设计技能,但课程强调的是语言本身的语法形式与语句使用规则,学生在这个阶段通常只能编写很简单的程序,解决的问题不用说也是很简单的。
这类简单问题,一般而言,只要直接选用程序设计语言提供的某语句也许就能完成求解,例如,用数组存储数据,再利用while循环语句,可能就足以解决这一阶段的许多问题了。
本书要指导读者向前迈一大步,大幅度提高编程能力,因为以后编写的程序,其规模要大很多,功能也要复杂得多。
不用说,编写规模庞大而复杂的程序,不但需要更强有力的工具,还一定需要更高级的编程技术。
我们希望在随后的学习过程,读者应扎实掌握数据的抽象思维方法,同时必须熟练掌握算法的规范声明、算法的性能分析、算法的性能评价等诸多技能。
设置本章的目的就是要详细论述这些内容。
此外,递归程序设计方法同样至关重要,读者也必须熟练掌握,因此也是本章讨论的内容,但论述得较为简明而且篇幅不很大。
我们提请读者注意,如果读者以前对递归程序设计基础未给予足够重视,了解流于肤浅,那么必须仔细研读这方面内容,以后一定会深感大有益处。
然而,在讨论各种工具与各项技术之前,我们必须强凋,编程可不仅仅是写程序代码,即写完一条条程序语句就万事大吉了。
与之截然相反,优秀的程序员有完全不同的观点。
程序设计的首要问题,应该是首先把大规模程序系统分解成许许多多自成体系且相对独立的组成部件,然后再为各部分之间存在的相互调用,定义严格的调用格式。