数据结构复习题-第10章2013-12-16
更新时间:2024-03-16 02:36:01 阅读量: 综合文库 文档下载
- 数据结构题库及答案推荐度:
- 相关推荐
第10章 内部排序
一、选择题(每小题2分,共20分)
1.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后放在已排序序列的合适位置,该排序方法称为( )排序法。
A.插入排序 B.选择排序 C.希尔排序 D.二路归并排序
2.下列排序算法中( )排序在一趟结束后不一定能选出一个元素放在其最终位置上。 A.选择 B.冒泡 C.归并 D.堆 3.若一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为( )。
A. 38, 40, 46, 56, 79, 84 B. 40, 38, 46, 79, 56, 84 C. 40, 38, 46, 56, 79, 84 D. 40, 38, 46, 84, 56, 79
4.排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为( )。
A.希尔排序 B.冒泡排序 C.插入排序 D.选择排序 5.为实现快速排序算法,待排序序列宜采用的存储方式是( )。
A. 顺序存储 B. 散列存储 C. 链式存储 D. 索引存储 6.若一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用堆排序的方法建立的初始堆为( )。
A. 79, 46, 56, 38, 40, 84 B. 84, 79, 56, 38, 40, 46 C. 84, 79, 56, 46, 40, 38 D. 84, 56, 79, 40, 46, 38 二、判断题(每小题1分,共10分)
1.对于n个记录的集合进行快速排序,所需要的平均时间是O(nlogn)。( ) 2.(101,88,46,70,34,39,45,58,66,10)是堆。( ) 三、填空题(每空1分,共10分)
1.不仅需要使用内存,而且还要使用外存的排序称为 。
2.若不考虑基数排序,则在排序过程中,主要进行的两种基本操作是关键字的 和记录的 。
四、应用题(共40分)
1.(6分)简述快速排序算法的基本思想。
2.(6分)写出快速排序的思想,并写出下列序列快速排序的结果(49,38,65,97,76,13,27,50)
3.(6分)对一组记录(54,38,96,23,15,72,60,45,83)执行希尔排序(D=5,3,1),记录每一趟排序结果。
4.(6分)对一组记录(54,38,96,23,15,72,60,45,83)执行冒泡排序,记录每一趟排序结果。
5.(6分)已知一组元素的排序码为(36,25,48,12,65,20),写出用直接插入排序法每次向前面有序表插入一个元素后的排列结果。
6.(6分)写出用堆排序算法对(12,15,3,30,28,9)进行排序时,初始堆及以后每挑好一个元素重新调整后堆的状态。
7.(6分)判断下列序列是否是堆(可以是小堆,也可以是大堆,若不是堆,请将它们调整为堆)。
(1)100,85,98,77,80,60,82,40,20,10,66 (2)100,85,40,77,80,60,66,98,82,10,20
1
(3)10,20,40,60,66,77,80, 82,85,98,100
8. (6分)画出向小根堆中加入数据4, 2, 5, 8, 3时,每加入一个数据后堆的变化。 五、算法题(共20分)
1.(6分)编写起泡排序的算法。
2.(6分)写出一趟快速排序的算法。 3.(6分)编写直接插入排序的算法。 4.(6分)编写折半插入排序的算法。 5.(6分)编写简单选择排序的算法。 6.(6分)编写归并排序的算法。(可选)
答案:
一、选择题 1-6 ACCCAB 二、判断题 1-2 对对
三、填空题 1.外部排序 2. 比较、移动 四、应用题 无答案 五、算法题
1.(6分)编写起泡排序的算法。 答案一:
void BubbleSort(Elem R[ ], int n) { i = n;
while (i >1) {
lastExchangeIndex = 1;
for (j = 1; j < i; j++) if (R[j+1].key < R[j].key) {
Swap(R[j], R[j+1]); // temp=R[j] ; R[j]= R[j+1]; R[j+1]= temp; lastExchangeIndex = j; //记下进行交换的记录位置 } //if
i = lastExchangeIndex; // 本趟进行过交换的最后一个记录的位置 } // while } // BubbleSort 答案二:
void paixu(int a[],int n) {
for(i=0;i { for (i=0;i<10-j;i++) 2分 if (a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp;} } 6分 for(i=1;i<11;i++) 2 printf(\printf(\} 2.(6分)写出一趟快速排序的算法。 int partition(sqlist L, int low, int high) {L.r[0]=L.r[low]; pivotkey=L.r[low].key; 1分 while(low { while(low L.r[low]=L.r[high]; 3分 while(low } L.r[low]=L.r[0]; return low; 7分 } 3.(6分)编写直接插入排序的算法。 void InsertionSort ( SqList &L ) { // 对顺序表 L 作直接插入排序。 for ( i=2; i<=L.length; ++i ) if (L.r[i].key < L.r[i-1].key) { L.r[0] = L.r[i]; // 复制为监视哨 for ( j=i-1; L.r[0].key < L.r[j].key; -- j ) L.r[j+1] = L.r[j]; // 记录后移 L.r[j+1] = L.r[0]; // 插入到正确位置 } } // InsertSort 4.(6分)编写折半插入排序的算法。 void BiInsertionSort ( SqList &L ) { for ( i=2; i<=L.length; ++i ) { L.r[0] = L.r[i]; // 将 L.r[i] 暂存到 L.r[0] low = 1; high = i-1; while (low<=high) { m = (low+high)/2; // 折半 if (L.r[0].key < L.r[m].key) high = m-1; // 插入点在低半区 else low = m+1; // 插入点在高半区 }//在 L.r[1..i-1]中折半查找插入位置; for ( j=i-1; j>=high+1; --j ) L.r[j+1] = L.r[j]; // 记录后移 L.r[high+1] = L.r[0]; // 插入 } // for } // BInsertSort 3 5.(6分)编写简单选择排序的算法。 void SelectSort (int R[], int n ) { // 对记录序列R[1..n]作简单选择排序。 for (i=1; i // 选择第 i 小的记录,并交换到位 j = SelectMinKey(R, i); // 在 R[i..n] 中选择关键字最小的记录 if (i!=j) R[i]←→R[j]; // 与第 i 个记录交换 } } // SelectSort 6.(6分)编写归并排序的算法。(可选) void Merge (int R[], int R2[], int l, int m, int h) { // 将有序的记录序列 R[l..m] 和 R[m+1..h] // 归并为有序的记录序列 R2[l..h] for (i=l , j=m+1; i<=m && j<=h; ++k) { // 将R中记录由小到大地并入R2 if (R[i] <=R[j]) R2[k] = R[i]; else R2[k] = R[j]; } if (i<=m) R[k..h] = R[i..m]; // 将剩余的 R[i..m] 复制到 R2 if (j<=h) R2[k..h] = R[j..h]; // 将剩余的 R[j..h] 复制到 R2 } // Merge 4
正在阅读:
信息管理系统大作业12-21
侯磊+40900638论文粗稿 - 图文11-24
历史实验报告02-27
浅谈提高写作水平的一点方法05-06
2017-2022年中国巴林石市场监测及发展前景研究报告 - 图文02-27
浅谈幼儿园开展民间美术教育的有效策略02-27
自助设备运营操作规程10-22
福建省电力有限公司关于加强10千伏业扩工程竣工检验管理的通知(闽电运检〔2013〕307号)01-25
三元材料发展与应用综述 - 图文02-27
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 复习题
- 数据结构
- 2013
- 12
- 16
- 2019高考历史一轮复习 第二部分 加试题型 三、加试30分强化练(
- 《领袖风采》的培训心得体会
- 我最敬佩的妈妈
- 素材的编辑 - 图文
- 三下期中考试题库
- 窗口行业服务规范
- 《Windows编程》实验五 动态多态的实现
- 南通市七校联合调研考试初二数学试卷
- 2019年七年级生物上册 第2讲 生物与环境的关系讲义 苏教版 - 图
- 安徽省2019届高三数学理一轮复习典型题专项训练:三角函数
- 2018年会计继续教育练习题答案(管理会计之-经营分析)68595
- 行政许可法律文书
- 2丹江口市市域生活垃圾治理规划
- 上海轨道交通的调研报告
- 易达教育
- 质量考核和奖惩制度
- 人才战略计划
- 单克隆抗体制备教学设计
- 新人教版必修1《1.4 实验:用打点计时器测速度》同步练习试题
- 仓库管理软件