数据结构(C++版)课后作业6-8章附答案
056312409数据结构(C语言版)(夏燕张兴科)--习题答案--第8章

8.10习题与上机操作⒈选择题⒉⑴ 1⑵n2⑶n-1⑷n(n+1)/2⑸设N=(V,E)是一连通网,U 是顶点集V的一个非空子集。
若(u ,v)是一条具有最小权值的边,其中u∈U,v∈V-U,则存在一棵包含边(u ,v)的最小生成树。
⑹ 5 6 4 2 1 , 5 6 2 1 4⑺非空有穷,可以⑻邻接矩阵,邻接表⑼构造最小生成树,加点法,加边法⑽路径长度递增,最短路径⒊简答题⑴对于存储结构采用邻接矩阵的无向图,如何判断下列有关问题?①图中有多少条边?答:矩阵中所有非0元素的个数的一半。
②任意两顶点间是否有边相连?答:若第i行第j列的元素非0,则说明i顶点和j顶点间有边,否则说明其没边。
③任意一个顶点的度是多少?答:第i行(列)中非0元素的个数即为第i个顶点的度。
⑵对于存储结构采用邻接表的有向图,如何判断下列有关问题?①图中有多少条边?答:邻接表中边(弧)结点的个数。
②图中是否存在从V i到V j的边?答:若在第i个单链表中存在值域为j的弧结点,则说明存在从V i到V j的边,否则说明不存在从V i到V j的边。
③如何求顶点V i的入度和出度?答:第i个单链表中边(弧)结点的个数为顶点V i的出度。
所有单链表中值域为i 的边(弧)结点的个数为顶点V i的入度。
⒋画图题⑴答:①g1的图示和图g1的邻接表如下图所示。
0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 01 1 0 0 1 0图g1② 图g1的邻接矩阵如下图所示:③ V1、V2、V3、V4、V5的度分别为:2,3,2,3,2⑵ 答:① g2的图示和g2的邻接矩阵如下所示:图g2 图g2的邻接矩阵② 图g2的邻接表和逆邻接表如下:③ V1到V6的入度依次为:3,1,0,1,2,0V1到V6的出度依次为:0,2,0,1,1,30 1 0 1 0 1 0 0 1 1 0 0 0 1 1 11 1 0 00 1 1 0 0图g2的邻接表 图g2的逆邻接表图g3的连通分量 答:g3不是连通图。
数据结构(c语言)第6章二叉树课练答案(含完整实验程序刘玉保留

第6章树和二叉树自测卷解答姓名班级一、下面是有关二叉树的叙述,请判断正误(每小题1分,共10分)(√)1. 若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。
(×)2.二叉树中每个结点的两棵子树的高度差等于1。
(√)3.二叉树中每个结点的两棵子树是有序的。
(×)4.二叉树中每个结点有两棵非空子树或有两棵空子树。
(×)5.二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。
(应当是二叉排序树的特点)(×)6.二叉树中所有结点个数是2k-1-1,其中k是树的深度。
(应2i-1)(×)7.二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。
(×)8.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i—1个结点。
(应2i-1)(√)9.用二叉链表法(link-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。
(正确。
用二叉链表存储包含n个结点的二叉树,结点共有2n个链域。
由于二叉树中,除根结点外,每一个结点有且仅有一个双亲,所以只有n-1个结点的链域存放指向非空子女结点的指针,还有n+1个空指针。
)即有后继链接的指针仅n-1个。
(√)10. 〖01年计算机系研题〗具有12个结点的完全二叉树有5个度为2的结点。
最快方法:用叶子数=[n/2]=6,再求n2=n0-1=5二、填空(每空1分,共15分)1.由3个结点所构成的二叉树有5种形态。
2. 【计算机研2000】一棵深度为6的满二叉树有n1+n2=0+ n2= n0-1=31 个分支结点和26-1 =32个叶子。
注:满二叉树没有度为1的结点,所以分支结点数就是二度结点数。
3.一棵具有257个结点的完全二叉树,它的深度为9。
(注:用⎣ log2(n) ⎦+1= ⎣ 8.xx ⎦+1=94.【全国专升本统考题】设一棵完全二叉树有700个结点,则共有350个叶子结点。
数据结构(c )课后习题答案

数据结构(c )课后习题答案数据结构(C)课后习题答案在学习数据结构(C)课程时,课后习题是非常重要的一部分。
通过完成这些习题,我们可以加深对数据结构的理解,提高编程能力,并且更好地掌握C语言的运用。
下面我们就来看看一些常见的数据结构(C)课后习题答案。
1. 链表的创建和遍历链表是数据结构中常见的一种,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
在C语言中,我们可以通过动态内存分配来创建链表,并且可以使用指针来进行遍历。
下面是一个简单的链表创建和遍历的示例代码:```c#include <stdio.h>#include <stdlib.h>struct Node{int data;struct Node *next;};void printList(struct Node *node){while (node != NULL){printf("%d ", node->data);node = node->next;}}int main(){struct Node *head = NULL;struct Node *second = NULL;struct Node *third = NULL;head = (struct Node *)malloc(sizeof(struct Node)); second = (struct Node *)malloc(sizeof(struct Node)); third = (struct Node *)malloc(sizeof(struct Node)); head->data = 1;head->next = second;second->data = 2;second->next = third;third->data = 3;third->next = NULL;printList(head);return 0;}```2. 栈的实现栈是一种后进先出(LIFO)的数据结构,可以使用数组或链表来实现。
数据结构(c语言版)课后习题答案完整版资料

第1章绪论5.选择题:CCBDCA6.试分析下面各程序段的时间复杂度。
(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题babadbcabdcddac2.算法设计题(6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。
ElemType Max (LinkList L ){if(L->next==NULL) return NULL;pmax=L->next; //假定第一个结点中数据具有最大值p=L->next->next;while(p != NULL ){//如果下一个结点存在if(p->data > pmax->data) pmax=p;p=p->next;}return pmax->data;(7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。
void inverse(LinkList &L) {// 逆置带头结点的单链表Lp=L->next; L->next=NULL;while ( p) {q=p->next; // q指向*p的后继p->next=L->next;L->next=p; // *p插入在头结点之后p = q;}}(10)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。
[题目分析] 在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第i 个元素,第i+1至第n个元素要依次前移)。
本题要求删除线性表中所有值为item的数据元素,并未要求元素间的相对位置不变。
因此可以考虑设头尾两个指针(i=1,j=n),从两端向中间移动,凡遇到值item的数据元素时,直接将右端元素左移至值为item的数据元素位置。
数据结构(c语言版)课后习题答案完整版

数据结构(c语言版)课后习题答案完整版数据结构(C语言版)课后习题答案完整版一、数据结构概述数据结构是计算机科学中一个重要的概念,用来组织和存储数据,使之可以高效地访问和操作。
在C语言中,我们可以使用不同的数据结构来解决各种问题。
本文将提供完整版本的C语言数据结构的课后习题答案。
二、顺序表1. 顺序表的定义和基本操作顺序表是一种线性表,其中的元素在物理内存中连续地存储。
在C 语言中,我们可以通过定义结构体和使用指针来实现顺序表。
以下是顺序表的一些基本操作的答案:(1)初始化顺序表```ctypedef struct{int data[MAX_SIZE];int length;} SeqList;void InitList(SeqList *L){L->length = 0;}```(2)插入元素到顺序表中```cbool Insert(SeqList *L, int pos, int elem){if(L->length == MAX_SIZE){return false; // 顺序表已满}if(pos < 1 || pos > L->length + 1){return false; // 位置不合法}for(int i = L->length; i >= pos; i--){L->data[i] = L->data[i-1]; // 向后移动元素 }L->data[pos-1] = elem;L->length++;return true;}```(3)删除顺序表中的元素```cbool Delete(SeqList *L, int pos){if(pos < 1 || pos > L->length){return false; // 位置不合法}for(int i = pos; i < L->length; i++){L->data[i-1] = L->data[i]; // 向前移动元素 }L->length--;return true;}```(4)查找顺序表中的元素```cint Search(SeqList L, int elem){for(int i = 0; i < L.length; i++){if(L.data[i] == elem){return i + 1; // 找到元素,返回位置 }}return -1; // 未找到元素}```2. 顺序表习题解答(1)逆置顺序表```cvoid Reverse(SeqList *L){for(int i = 0; i < L->length / 2; i++){int temp = L->data[i];L->data[i] = L->data[L->length - 1 - i]; L->data[L->length - 1 - i] = temp;}}```(2)顺序表元素去重```cvoid RemoveDuplicates(SeqList *L){for(int i = 0; i < L->length; i++){for(int j = i + 1; j < L->length; j++){if(L->data[i] == L->data[j]){Delete(L, j + 1);j--;}}}}```三、链表1. 单链表单链表是一种常见的链式存储结构,每个节点包含数据和指向下一个节点的指针。
数据结构(C语言版)课后习题答案

第1章绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。
如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。
数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
在有些情况下,数据元素也称为元素、结点、记录等。
数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
例如,学生基本信息表中的学号、姓名、性别等都是数据项。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。
逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构:数据对象在计算机中的存储表示,也称为物理结构。
抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。
具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
答案:例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。
每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。
数据结构(C 版)王红梅_版课后答案

数据结构(C++版)王红梅_版课后答案.txt如果你同时爱几个人,说明你年轻;如果你只爱一个人,那么,你已经老了;如果你谁也不爱,你已获得重生。
积极的人一定有一个坚持的习惯。
第 1 章绪论课后习题讲解1. 填空⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
【解答】数据元素⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。
【解答】数据项,数据元素【分析】数据结构指的是数据元素以及数据元素之间的关系。
⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。
【解答】集合,线性结构,树结构,图结构⑷数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。
【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系⑸算法具有五个特性,分别是()、()、()、()、()。
【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。
【解答】自然语言,程序设计语言,流程图,伪代码,伪代码⑺在一般情况下,一个算法的时间复杂度是()的函数。
【解答】问题规模⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。
【解答】Ο(1),Ο(nlog2n)【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。
2. 选择题⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。
A 线性结构B 非线性结构C 存储位置D 指针【解答】C,D【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。
数据结构(C语言版)习题解答(DOC)

1.3设n是正整数。
试写出下列程序段中用记号“△”标注的语句的频度:(2) i=1; k=0;do {△k+=10*i;i++;}while(i<=n-1)当n=1时,执行1;当n>=2时,执行n-1次;(3)i=1; k=0;do {△k+ = 10*i; i++;}while(i==n);当n=2时,执行2次;当n!=2时,执行1次;(4) i=1; j=0;while(i+j≤n) {△if(i<j) i++; else j++;}执行n次;(5) x=n; y=0; //n是不小于1的常数while(x>=(y+1)*(y+1)){△y++;}执行向下取整)(6) x=91; y=100;while ( y>0 )△if(x>100) { x-=10; y--; }else x++ ;}If语句执行100次(7) for( i=0; i<n; i++)for( j=i; j<n; j++)for( k=j; k<n; k++)△x+=2;过程:n1n1i0j in(n1)(n2) (n j)6--==++ -=∑∑第二章2.3 已知顺序表La中数据元素按非递减有序排列。
试写一个算法,将元素x插到La的合适位置上,保持该表的有序性。
思路:先判断线性表的存储空间是否满,若满返回Error;否则从后向前先移动数据,找到合适的位置插入。
Status Insert_SqList(SqList &La,int x)//把x 插入递增有序表La 中{if(La.length==La.listsize) return ERROR;for(i=La.length-1;La.elem[i]>x&&i>=0;i--)La.elem[i+1]=La.elem[i];La.elem[i+1]=x;La.length++;return OK;}//Insert_SqList2.5 试写一个算法,实现顺序表的就地逆置,即在原表的存储空间将线性表(a1,a2, ..., an-1,an)逆置为(an,an-1, ..., a2,a1)//思路就是两个指示变量i,j同时分别从顺序表的开始和结尾处相向改变void reverse(SqList &A)//顺序表的就地逆置{ElemType p;for(i=1,j=A.length;i<j;i++,j--){//A.elem[i]<->A.elem[j];p=A.elem[i];A.elem[i[=A.elem[j];A.elem[j]=p;}}//reverse2.7 已知线性表L采用顺序存储结构存放,对两种不同情况分别写出算法,删除L中多余的元素,使得L中没有重复元素:(1)L中数据元素无序排列;(2)L中数据元素非递减有序排列。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6 章图
课后习题讲解
1. 填空题
⑴设无向图G中顶点数为n,则图G至少有()条边,至多有()条边;若G为有向图,则至少有()条边,至多有()条边。
【解答】0,n(n-1)/2,0,n(n-1) 【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。
⑵任何连通图的连通分量只有一个,即是()。
【解答】其自身
⑶图的存储结构主要有两种,分别是()和()。
【解答】邻接矩阵,邻接表
⑸已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。
【解答】求第j列的所有元素之和
⑹有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。
【解答】出度
⑺图的深度优先遍历类似于树的()遍历,它所用到的数据结构是();图的广度优先遍历类似于树的()遍历,它所用到的数据结构是()。
【解答】前序,栈,层序,队列
(8)如果一个有向图不存在(),则该图的全部顶点可以排列成一个拓扑序列。
【解答】回路
2. 选择题
⑵n个顶点的强连通图至少有()条边,其形状是()。
A n B n+1 C n-1 D n×(n-1) E 无回路 F 有回路G 环状H 树状【解答】A,G
⑶含n 个顶点的连通图中的任意一条简单路径,其长度不可能超过()。
A 1 B n/2 C n-1 D n
【解答】C 【分析】若超过n-1,则路径中必存在重复的顶点。
(4)最小生成树指的是()。
A 由连通网所得到的边数最少的生成树 B 由连通网所得到的顶点数相对较少的生成树 C 连通网中所有生成树中权值之和为最小的生成树 D 连通网的极小连通子图
【解答】C
(5)下面关于工程计划的AOE网的叙述中,不正确的是()
A 关键活动不按期完成就会影响整个工程的完成时间
B 任何一个关键活动提前完成,那么整个工程将会提前完成
C 所有的关键活动都提前完成,那么整个工程将会提前完成
D 某些关键活动若提前完成,那么
整个工程将会提前完
【解答】B 【分析】AOE网中的关键路径可能不止一条,如果某一个关键活动提前完成,还不能提前整个工程,而必须同时提高在几条关键路径上的关键活动。
3. 判断题
(1)用邻接矩阵存储图,所占用的存储空间大小只与图中顶点个数有关,而与图的边数无关。
【解答】对。
邻接矩阵的空间复杂度为O(n2),与边的个数无关。
(2)图G的生成树是该图的一个极小连通子图【解答】错。
必须包含全部顶点。
(3)在一个有向图的拓扑序列中,若顶点a在顶点b之前,则图中必有一条弧。
【解答】错。
只能说明从顶点a到顶点b有一条路径。
7.已知一个连通图如图所示,试给出图的邻接矩阵和邻接表存储示意图,若从顶点v1出发对该图进行遍历,分别给出一个按深度优先遍历和广度优先遍历的顶点序列。
8.图所示是一个无向带权图,请分别按Prim算法和Kruskal算法求最小生成树。
自己做。
第7 章查找技术
(3)在各种查找方法中,平均查找长度与结点个数无关的查找方法是()。
【解答】散列查找【分析】散列表的平均查找长度是装填因子的函数,而不是记录个数n的函数。
2. 选择题
(1)设散列表表长m=14,散列函数H(k)=k mod 11。
表中已有15、38、61、84四个元素,如果用线性探侧法处理冲突,则元素49的存储地址是()。
【解答】A 【分析】元素15、38、61、84分别存储在4、5、6、7单元,而元素49的散列地址为5,发生冲突,向后探测3个单元,其存储地址为8。
3. 判断题
⑴二叉排序树的充要条件是任一结点的值均大于其左孩子的值,小于其右孩子的值。
【解答】错。
分析二叉排序树的定义,是左子树上的所有结点的值都小于根结点的值,右子树上的所有结
点的值都大于根结点的值。
⑵二叉排序树的查找和折半查找的时间性能相同。
【解答】错。
二叉排序树的查找性能在最好情况和折半查找相同。
计算题
(1)将数列(24,15,38,27,121,76,130)的各元素依次插入一棵初始为空的二叉排序树中,请画出最后的结果并求等概率情况下查找成功的平均查找长度。
第8 章排序技术
课后习题讲解
1. 填空题
⑴排序的主要目的是为了以后对已排序的数据元素进行()。
【解答】查找【分析】对已排序的记录序列进行查找通常能提高查找效率。
⑶对一组记录(54, 38, 96, 23, 15, 72, 60, 45, 83)进行直接插入排序,当把第7个记录60插入到有序表时,为寻找插入位置需比较()次。
【解答】3 【分析】当把第7个记录60插入到有序表时,该有序表中有2个记录大于60。
⑷对一组记录(54, 38, 96, 23, 15, 72, 60, 45, 83)进行快速排序,在递归调用中使用的栈所能达到的最大深度为()。
【解答】3
2. 选择题
⑴下述排序方法中,比较次数与待排序记录的初始状态无关的是()。
A插入排序和快速排序B归并排序和快速排序C选择排序和归并排序D插入排序和归并排序
【解答】C 【分析】选择排序在最好、最坏、平均情况下的时间性能均为O(n2),归并排序在最好、最坏、平均情况下的时间性能均为O(nlog2n)。
(2) 对初始状态为递增有序的序列进行排序,最省时间的是(),最费时间的是()。
已知待排序序列中每个元素距其最终位置不远,则采用()方法最节省时间。
A 堆排序B插入排序C快速排序 D 直接选择排序
【解答】B,C,B 【分析】待排序序列中每个元素距其最终位置不远意味着该序列基本有序。
(3) 当待排序序列基本有序或个数较小的情况下,最佳的内部排序方法是(),就平均时间而言,()最佳。
A 直接插入排序 B 起泡排序C简单选择排序D快速排序【解答】A,D
(4) 设有5000个元素,希望用最快的速度挑选出前10个最大的,采用()方法最好。
A快速排序B堆排序C希尔排序 D 归并排序
【解答】B 【分析】堆排序不必将整个序列排序即可确定前若干个最大(或最小)元素。
(5) 设要将序列(Q,H,C,Y,P,A,M,S,R,D,F,X)中的关键码按升序排列,则()是起泡排序一趟扫描的结果,()是增量为4的希尔排序一趟扫描的结果,()二路归并排序一趟扫描的结果,()是以第一个元素为轴值的快速排序一趟扫描的结果. A (F,H,C,D,P,A,M,Q,R,S,Y,X)B (P,A,C,S,Q,D,F,X,R,H,M,Y)C (A,D,C,R,F,Q,M,S,Y,P,H,X)D (H,C,Q,P,A,M,S,R,D,F,X,Y)E (H,Q,C,Y,A,P,M,S,D,R,F,X)
【解答】D,B,E,A,C
(6) 排序的方法有很多种,()法从未排序序列中依次取出元素,与已排序序列中的元素作比较,将其放入已排序序列的正确位置上。
()法从未排序序列中挑选元素,并将其依次放入已排序序列的一端。
交换排序是对序列中元素进行一系列比较,当被比较的两元素为逆序时,进行交换;()和()是基于这类方法的两种排序方法,而()是比()效率更高的方法;()法是基于选择排序的一种方法,是完全二叉树结构的一个重要应用。
A 选择排序 B 快速排序 C 插入排序 D 起泡排序 E 归并排序
【解答】C,A,D,B,B,D,F
(7) 快速排序在()情况下最不利于发挥其长处。
A 待排序的数据量太大 B 待排序的数据中含有多个相同值 C 待排序的数据已基本有序 D 待排序的数据数量为奇数
【解答】C 【分析】快速排序等改进的排序方法均适用于待排序数据量较大的情况,各种排序方法对待排序的数据中是否含有多个相同值,待排序的数据数量为奇数或偶数都没有影响。
(8) ()方法是从未排序序列中挑选元素,并将其放入已排序序列的一端。
A 归并排序 B 插入排序 C 快速排序 D 选择排序
【解答】D
(9)对数列(25, 84, 21, 47, 15, 27, 68, 35, 20)进行排序,元素序列的变化情况如下:⑴25, 84, 21, 47, 15, 27, 68, 35, 20 ⑵20, 15, 21, 25, 47, 27, 68, 35, 84 ⑶15, 20, 21, 25, 35, 27, 47, 68, 84 ⑷15, 20, 21, 25, 27, 35, 47, 68, 84 则采用的排序方法是()。
计算题:
已知数据序列为(12,5,9,20,6,31,24),对该数据序列进行排序,写出插入排序、起泡排序、快速排序、简单选择排序、二路归并排序每趟的结果。
3. 判断题
⑴如果某种排序算法是不稳定的,则该排序方法没有实际应用价值。
【解答】错。
一种排序算法适合于某种特定的数据环境,有时对排序的稳定性没有要求。
⑵当待排序的元素很大时,为了交换元素的位置,移动元素要占用较多的时间,这是影响时间复杂性的主要因素。
【解答】对。
此时着重考虑元素的移动次数。