(一)算法与数据结构概述

一、算法概述

1、什么是算法?
   可以理解为:对特定问题的求解步骤,由一些基本的运算和规定的运算顺序而构成,代表了用系统的方法来描述解决问题的一种策略机制。
2、一个典型算法有什么特征?
   有穷性、确切性、输入、输出、可行性
3、常用的算法有哪些?
   按算法思路来分:递推、递归、贪婪、动态规划、穷举、迭代、分治
   按算法应用来分:基本算法、数据结构相关的算法、几何算法、图论算法、规划算法、数据分析算法、排序算法、查找算法等
   按确定性:确定性算法(解唯一)、不确定算法(多值性)
4、算法历史
   勾股定理、开平方问题、等差级数问题、割圆术、秦九韶算法、剩余定理、欧几里得算法
5、算法相关概念的区别?
   算法与公式:公式是高度精简的计算方法、可认为是一种算法。算法不一定是公式,更复杂,解决的问题更广泛
   算法与程序:程序语言是算法实现的一种形式、工具。首先需要熟悉程序语言(较容易)才能利用语言编写合适的算法实现程序(困难)。
   算法与数据结构:数据结构是数据的组织形式,是算法实现的基础。
   数据结构+算法+程序设计语言=程序
6、算法的表示有什么形式?
   自然语言表示
   流程图表示:顺序、分支、循环结构
   N-S图表示
   伪代码表示
7、怎么评价算法的性能?
   时间复杂度:所耗费的时间
   空间复杂度:所耗费的内存
8、算法的新进展
   并行算法
   遗传与进化算法
   量子算法


二、数据结构

1、什么是数据结构?
   一个数据结构是由数据元素依据某种逻辑联系组织起来的,对数据元素间逻辑关系的描述成为数据的逻辑结构。数据结构是一切算法的基础。
2、数据结构中的基本概念
   数据:数据是信息的载体,包括字符、图像、声音等(一张学生成绩表)
   数据元素:数据元素是数据的基本单位,也称元素、节点、定点、记录。一个元素可以由若干个数据项组成。(单独每个同学的成绩记录)
   数据项:数据项是具有独立含义的最小标识单位,数据项也可称为字段、域、属性(学号、姓名、数学成绩、语文成绩、总成绩等)
   数据结构:数据之间的相互关系,也是数据的组织形式(对数学和语文成绩求和得总成绩)
3、数据结构的内容
   数据的逻辑结构:数据元素之间的逻辑关系,是从具体问题抽象出来的数学模型
   数据的存储结构:数据元素及其逻辑关系在计算机存储器中的表现形式。
   数据的运算:能够对数据施加的操作,包括检索、更新、插入、删除、排序等
4、数据结构是一个有机整体
   同一个逻辑结构可以有不同的存储结构:如线性表是最简单的一种逻辑结构,如果采用顺序方式存储,这种数据结构就是顺序表,如果采用链式方式存储,这种数据结构就是链表,如果采用散列方式,就是散列表
   用一种逻辑结构也可以有不同的数据运算集合:如果将线性表的插入和删除操作限制在表的同一段,那么这种数据结构就是栈;如果在两端就是队列。
5、数据结构的分类
   线性结构: 一对一的关系。是非空集,线性表、队列、栈、串  
   非线性结构:有多个对应关系。是非空集。数组、广义表、数、图
6、数据结构的几种存储方式(可以单独或组合使用)
   顺序存储方式:具有连续的存储空间。逻辑上相邻的点存储在物理位置上相邻的存储单元,节点间的逻辑关系由存储单元的邻接关系体现。如数组
   链式存储方式:不要求逻辑上相邻的点在结构上相邻,节点间的逻辑关系由附加的引用字段表示,一个节点的引用字段指向下一个节点的存储位置。
   索引存储方式:采用附加的索引表的方式存储节点信息
   散列存储方式:根据节点的关键字直接计算出该节点的存储地址。
7、数据的类型
   ADT抽象数据类型:数据的组织及其相关的操作,具有数据抽象和数据封装两个特性。一个抽象数据类型可以定义为如下形式:
   ADT 抽象数据类型名
   {
    数据对象:(数据元素集合)
    数据关系:(数据关系二元组结合)
    基本操作:(操作函数的罗列)
    }ADT 抽象数据类型名;

   抽象数据类型ADT可以看做是描述问题的模型,它独立于具体实现,优点是将数据和操作封装在一起,使得用户程序只能通过ADT里定义的某些操作来访问其中的数据,从而实现信息隐藏
  在java中,使用接口来表示抽象数据类型ADT,用接口的实现来实现ADT的。抽象数据类型ADT是概念层上的抽象,而接口属于实现层上的抽象。
8、常用的数据结构 
   数组array:只能存放相同类型变量;大小固定
   栈stack:特殊的线性表,只能在一端进行插入和删除操作。先进后出。只允许在一端插入、另一端删除。
   队列queue:特殊的线性表,先进先出
   链表linked list:物理上存在非连续的特点,由一系列数据点组成,每个数据点包括数据域和引用域两部分。
   树tree:典型的非线性结构,有且仅有一个根节点
   图Graph:非线性数据结构,在图结构中,数据节点一般称为顶点,边是顶点的有序偶对
   堆heap:特殊的树形数据结构,我们一般讨论二叉堆。堆的特点是其根节点的值是所有节点中最小或者最大的,并且根节点的两个子树也是堆结构
9、如何选择合适的数据结构解决实际问题?
   计算机能处理的问题一般分为两类:
   数值计算问题:线性方程、矩阵的求解、微分、积分
   非数值计算问题:数据结构




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值