C语言的算法知识汇总

来源:本站
导读:目前正在解读《C语言的算法知识汇总》的相关信息,《C语言的算法知识汇总》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《C语言的算法知识汇总》的详细说明。
简介:大家通过计算机二级了吗,这里有C语言的算法知识总结,欢饮爱学习的你来阅哦。

大家一起来看:

1.1算法的基本概念

1.算法的基本特征:可行性、确定性、有穷性、拥有足够的情报。

2.算法的基本要素:

(1)算法中对数据的运算和操作,包括:算术、逻辑、关系运算以及数据传输。

(2)算法的控制结构,一般都可由顺序、选择、循坏(重复)三种控制结构组合而成。

3.算法的设计基方法:列举法、归纳法、递推、递归、减半递推、回溯法。

4.算法的时间复杂度:是指算法所需要的计算工作量,由基本运算次数来度量。

5算法的空间复杂度:指执行算法所需要的内存空间。包括,算法程序所占空间、输入初始数据所占的存储空间、算法执行过程中所需要的额外空间。

1.2数据结构的基本概念

1.数据结构主要研究以下三个方面:

(1)逻辑结构:数据集合中各数据元素之间所固有的逻辑关系。

(2)存储结构:在对数据进行处理时,各数据元素在计算机中的存储关系。

(3)对各种数据结构进行的运算。

2.数据处理:指对数据集合中各元素以各种方式进行运算,包括插入、删除、查找、更改、以及对数据元素进行分析。

3.数据结构:是指带有结构的数据元素的集合,它包含以下两方面信息:

(1)表示数据元素的信息;

(2)表示各数据元素之间的前后件关系。

4.数据逻辑结构:B=(D,R)

B:数据结构

D:数据元素集合

R:各数据元素之间的前后件关系

5.数据存储结构:数据的逻辑结构在计算机存储空间中的存放形式,也叫物理结构。

常用的存储结构有顺序、链接、索引。

6.线性结构:若非空数据结构满足:

(1)有且只有一个根结点;

(2)每一个结点最多有一个前件,也最多有一个后件。则称线性结构,也叫线性表。

1.3线性表及其顺序存储结构

1.线性表是由一组元素组成,可是以是矩阵。

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

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

(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。

3.线性表中第i个元素在计算机存储空间中的存储地址为:ADR(ai)=ADR(a1)+(i-1)k

4.在程序设计语言中,通常定义一个一维数组来表示线性表的顺序存储空间。

5.对线性表的各种处理:插入、删除、查找、排序、分解、合并、复制、逆转等。

6.插入:从最后一个元素开始向后移动,直到第i个元素。

7.删除:从第i+1个元素开始向后移动,直到第n个元素。

1.4栈和队列

1.栈:是限定在一端进行插入与删除的线性表,先进后出或后进先出。

2.栈顶:允许插入的一端,用top表示;栈底:允许删除的另一端,用bottom来表示。

3.用一维数组S(1:m)作为栈的顺序存储空间,其中m为栈的最大容量。

4.Top=0表示栈空;top=m表示栈满。

5.栈的基本运算有三种:

(1)入栈运算:在栈顶位置插入一个新元素

(2)退栈运算:取出栈顶元素并赋给一个指定的变量

(3)读栈顶元素:指将栈顶元素赋给一个指定的变量

1.2队列:指允许在一端进行插入、而在另一端进行删除的线性表,先进先出或后进后出。

1.队尾:允许插入的一端,用尾指针(rear)来指向队尾元素

2.排头:允许删除的一端,用排头指针(front)指向排头元素

3.入队运算:在队尾插入一个元素,只涉及尾指针(rear)的变化

4.退队运算:在排头删除一个元素,只涉及排头指针(front)的变化

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

6.循环队列的初始状态为空,即rear=front=m。每进行一次入队运算,队尾指针就进一。当队尾指针rear=m+1时,则置rear=1。

第进行一次退队运算,排头指针就进一。当排头指针front=m+1时,则置front=1。

7.当队列满和空时,都有front=rear用S=0表示队列空,用S=1表示队列非空

(1)队列空的条件为S=0;

(2)队列满的条件为S=1且front=rear。

1.5线性链表的基本概念

1.链式存储方式,要求每个结点由两部分组成:

(1)用于存放数据元素值,称数据域;

(2)用于存放指针,称指针域。

2.线性链表:线性表的链式存储结构。最后一个结点指针域为空(NULL或0),表链表终止。

3.线性单链表只能找到后件结点,不能找到前件结点。

4.线性双链表:

(1)左指针,用以指向前件结点;

(2)右指针,有以指向向件结点。

5.带链的栈:采用链式存储结构的栈,称为可利用栈。

6.循环链表有以下两个特点:

(1)在循环链表中增加了一个表头结点,其数据域为任意或根据需要来设置,指针域指向线性链表的第一个元素的结点。循环链表的头指针指向表头结点。

(2)循环链表中最后一个结点的指针域不是空,而是指向表头结点。

7.在循环链表中,只要指出表中任何一个结点的位置,就可以从它出发访问到表中其他所有的结占,面线性单链表做不到这一点。

1.6树与二叉树

1.树:树是一种简单的非线性结构。

2.具有层次关系的数据都可以用树这种数据结构来描述。

3.在树结构中,每一个结点都只有一个前件,称为父结点;没有前件的结点只有一个,称为根结点,简称树的根。

4.第一个结点可以有多个后件,它们都称为该结点的子结点;没有后件的结点称为叶子结点

5.度:一个结点拥有的后件个数称该结点的度。在树中,所有结点中的最大的度称为树的度

6.深度:树的最大层次称为树的深度。

7.二叉树的性质:

(1)在二叉树的第k层上,最多有个结点。

(2)深度为m的二叉树最多有个结点。

(3)任意一棵二叉树中,度为0的结点(树子结点)总比度为2的结点多一个。

(4)具有n个结点的二叉树,其深度至少为[log2n]+1,其中[]表示取整。

完全二叉树有以下两个性质:

(5)具有n个结点的完全二叉树的深度为[log2n]+1。

(6)设完全二叉树有n结点。如果从根结点开始,按层序(每一层从左到右)用自然数字1,2,3,……,n给结点进行编号,则对于编号为k的结点有以下结论:

a.若k=1,则该结点为根结点;若k>1,则该结点的父结点的编号为int(k/2)。

b.若2k<=n,则编号为k的结点的左子结点编号为2k;否则该结点无左子结点(和右子结点)

c.若2k+1<=n,则编号为k的结点的右子结点编号为2k+1,否则该结点无右子结点。

8.二叉树通常采用链式存储结构,也由两部分组成:数据域和指针域(左指针域、右指针域)

9.二叉树的链式存储结构称为二叉链表,BT称为二叉链表的头指针。

1.6二叉树的遍历(递归过程)

1.前序遍历:

(1)访问根结点;

(2)前序遍历左子树;

(3)前序遍历右子树。

2.中序遍历:

(1)中序遍历左子树;

(2)访问根结点;

(3)中序遍历右子树。

3.后序遍历:

(1)后序遍历左子树:

(2)后序遍历右子树;

(3)访问根结点。

注:这里的前序、中序、后序是指根结点的访问次序,左子树始终比右子树先访问。

1.7查找技术

1.顺序查找:无序表、链式存储的有序表只能用顺序法查找。最多要查找n次。

2.二分查找:只适用于顺序存储的有序表。最多要查找log2n。

1.8排序技术

1.交换类排序法:

(1)冒泡排序法(下沉排序法),最多n(n-1)/2次。

(2)快速排序法

2.插入类排序法:

(1)简单插入排序法,最多n(n-1)/2次。

(2)希杀排序法,最多0()

3.选择类排序法

(1)简单选择类排序法,最多n(n-1)/2次

(2)堆排序法,最多0(nlog2n)次。

提醒:《C语言的算法知识汇总》最后刷新时间 2024-03-14 00:57:50,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《C语言的算法知识汇总》该内容的真实性请自行鉴别。