第一章数据结构与算法.docxVIP

  • 0
  • 0
  • 约5.92千字
  • 约 11页
  • 2024-03-19 发布于上海
  • 举报

算法

算法的基本概念

算法:是指解题方案的准确而完整的描述

1、算法的基本特性

可行性:针对实际问题设计的算法,人们总希望能够得到满意的结果。在设计算法时,必须要考虑它的可行性,否则是不会得到满意结果的。

确定性:是指算法中的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。

有穷性:是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。

拥有足够的情报:一个算法是否有效,还取决于为算法所提供的情报是否足够。

2、算法的基本要素

算法中对数据的运算和操作

算法的控制结构

3、算法设计的基本方法

列举法

思想是:根据提出的问题,列举所有可能的情况。

归纳法

思想是:通过列举少量的特殊情况,经过分析,最后找出一般的关系。

递推

是指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。

递归

为了降低问题的复杂程度,将问题逐层分解,最后归结为一些最简单

的问题。

减半递推技术

算法复杂度

1、算法的时间复杂度

是指执行算法所需要的计算工作量

2、算法的空间复杂度

是指执行这个算法所需要的内存空间

*算法分析的目的:分析算法的效率以求改进

数据结构的基本概念

什么是数据结构

杂乱无章的数据是不便于处理的

数据的逻辑结构:数据集和中各数据元素之间所固有的逻辑关系。是指反映数据元素之间逻辑关系的数据结构

数据的存储结构:在对数据进行处理时,各数据元素在计算机中的存储关系。是指数据的逻辑结构在计算机中的表示

数据结构:是指反映数据元素之间关系的数据元素集合的表示

数据结构的图形表示(11页)

线性结构与非线性结构

如果一个非空的数据结构满足下列两个条件:

有且只有一个根结点

每一个结点最多有一个前件,也最多有一个后件则称该数据结构为线性结构。又称线性表

如果一个数据结构不是线性结构,则称之为非线性结构

线性表及其顺序存储结构

线性表的基本概念

线性表是一种线性结构。非空线性表有如下结构特性:

有且只有一个根结点a1,它无前件

有且只有一个终端结点an,它无后件

除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。线性表中结点个数n称为线性表的长度。当n=0时,称为空表

线性表的顺序存储结构有以下两个基本特点:

线性表中所有元素所占的存储空间是连续的

线性表中各数据元素在存储空间中是按逻辑顺序依次存放的由此可以看出,在线性表的顺序存储结构中,其前后件两个元素在存储空间中是紧邻的,且前件元素一定存储在后件元素的前面。

顺序表的插入和删除运算(14页)

栈和队列

(1)

(2)

(3)

栈及其基本运算

1、什么是栈

实际也是线性表,只不过是一种特殊的线性表。一端是封闭的,不允许进行插入与删除元素,另一端是开口的,允许插入与删除元素。在顺序存储结构下,对这种类型线性表的插入与删除运算是不需要移动表中其他数据元素的。这种线性表称为栈

在栈中,允许插入与删除的一端称为栈顶,不允许插入和删除的另一端称为栈底。栈是按照“先进后出“或“后进先出“的原则组织数据的。

2、栈的顺序存储及其运算

三种运算:入栈、退栈与读栈

入栈:首先将栈顶指针进一(即top加1),然后将新元素插入到栈顶指针指向的位置。

退栈:首先将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量,然后将栈顶指针退一(即top减1)

读栈:这个运算不删除栈顶元素,只是将它的值赋给一个变量,因此,在这个运算中,栈顶指针不会改变。

队列及其基本运算

1、什么是队列:需要加入的元素总是插入到线性表的末尾,并且又总是从线性表的头部取出(删除)元素。这种线性表称为队列。

队列是“先进先出”或“后进后出“的线性表。它体现了“先来先服务”的原则。

在队列的末尾插入一个元素(入队运算)只涉及队尾指针rear的变化,而要删除队列中的排头元素(退队运算)只涉及排头指针front的变化。

2、循环队列及其运算

是指将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。

两种基本运算:入队与退队

入队运算是指在循环队列的队尾加入一个新元素。

首先将队尾指针进一(即rear=rear+1),并当rear=m+1时置rear=1;然后将新元素插入到队尾指针指向的位置

退队运算是指在循环队列的排头位置退出一个元素并赋给指

定的变量。首先将排头指针进一(即front=front+1),并当front=m+1时置front=1;然后将排头指针指向的元素赋给指定

的变量。

1.5.线性链表

线性表的顺序存储存在的缺点:a)插入和删除会引起大量结点的移动,运算效率低。b)线性表的存储空间不便于扩充c)不便于对存储空间的动态分

文档评论(0)

1亿VIP精品文档

相关文档