收藏 分销(赏)

数据结构内排序实验报告(2).doc

上传人:精**** 文档编号:2778123 上传时间:2024-06-05 格式:DOC 页数:8 大小:54.54KB 下载积分:6 金币
下载 相关 举报
数据结构内排序实验报告(2).doc_第1页
第1页 / 共8页
数据结构内排序实验报告(2).doc_第2页
第2页 / 共8页


点击查看更多>>
资源描述
(完整word版)数据结构内排序实验报告(2) 一、 实验目的 1、 了解内排序都是在内存中进行的。 2、 为了提高数据的查找速度,需要对数据进行排序。 3、 掌握内排序的方法。 二、 实验内容 1、 设计一个程序exp10—1.cpp实现直接插入排序算法,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。 (1) 源程序如下所示: //文件名:exp10-1.cpp #include <stdio.h> #define MAXE 20 //线性表中最多元素个数 typedef int KeyType; typedef char InfoType[10]; typedef struct //记录类型 { KeyType key; //关键字项 InfoType data; //其他数据项,类型为InfoType } RecType; void InsertSort(RecType R[],int n) //对R[0..n-1]按递增有序进行直接插入排序 { int i,j,k; RecType temp; for (i=1;i<n;i++) { temp=R[i]; j=i-1; //从右向左在有序区R[0..i-1]中找R[i]的插入位置 while (j>=0 && temp.key<R[j].key) { R[j+1]=R[j]; //将关键字大于R[i].key的记录后移 j--; } R[j+1]=temp; //在j+1处插入R[i] printf("i=%d,",i); //输出每一趟的排序结果 printf("插入%d,结果为: ",temp); for (k=0;k<n;k++) printf("%3d",R[k].key); printf("\n"); } } void main() { int i,k,n=10; KeyType a[]={9,8,7,6,5,4,3,2,1,0}; RecType R[MAXE]; for (i=0;i<n;i++) R[i].key=a[i]; printf("初始关键字: "); //输出初始关键字序列 for (k=0;k<n;k++) printf("%3d",R[k].key); printf("\n"); InsertSort(R,n); printf("最后结果: "); //输出初始关键字序列 for (k=0;k<n;k++) printf("%3d",R[k].key); printf("\n"); } (2) 运行的结果如下图所示: 2、 设计一个程序exp10—2.cpp实现希尔插入排序算法,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。 (1) 源程序如下所示: //文件名:exp10-2.cpp #include <stdio.h> #define MAXE 20 //线性表中最多元素个数 typedef int KeyType; typedef char InfoType[10]; typedef struct //记录类型 { KeyType key; //关键字项 InfoType data; //其他数据项,类型为InfoType } RecType; void ShellSort(RecType R[],int n) //希尔排序算法 { int i,j,d,k; RecType temp; d=n/2; //d取初值n/2 while (d>0) { for (i=d;i<n;i++) //将R[d..n-1]分别插入各组当前有序区中 { j=i-d; while (j>=0 && R[j].key>R[j+d].key) { temp=R[j]; //R[j]与R[j+d]交换 R[j]=R[j+d]; R[j+d]=temp; j=j-d; } } printf("d=%d: ",d); //输出每一趟的排序结果 for (k=0;k<n;k++) printf("%3d",R[k].key); printf("\n"); d=d/2; //递减增量d } } void main() { int i,k,n=10; KeyType a[]={9,8,7,6,5,4,3,2,1,0}; RecType R[MAXE]; for (i=0;i<n;i++) R[i].key=a[i]; printf("初始关键字: "); //输出初始关键字序列 for (k=0;k<n;k++) printf("%3d",R[k].key); printf("\n"); ShellSort(R,n); printf("最后结果: "); //输出初始关键字序列 for (k=0;k<n;k++) printf("%3d",R[k].key); printf("\n\n"); } (2) 结果如下图所示: 3、 设计一个程序exp10—3.cpp实现冒泡排序算法,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。 (1) 源程序如下所示: //文件名:exp10-3.cpp #include <stdio.h> #define MAXE 20 //线性表中最多元素个数 typedef int KeyType; typedef char InfoType[10]; typedef struct //记录类型 { KeyType key; //关键字项 InfoType data; //其他数据项,类型为InfoType } RecType; void BubbleSort(RecType R[],int n) //冒泡排序算法 { int i,j,k; RecType temp; for (i=0;i<n-1;i++) { for (j=n-1;j>i;j--) //比较,找出本趟最小关键字的记录 if (R[j].key<R[j-1].key) { temp=R[j]; //R[j]与R[j-1]进行交换,将最小关键字记录前移 R[j]=R[j-1]; R[j-1]=temp; } printf("i=%d,冒出的最小关键字:%d,结果为: ",i,R[i].key); //输出每一趟的排序结果 for (k=0;k<n;k++) printf("%2d",R[k].key); printf("\n"); } } void main() { int i,k,n=10; KeyType a[]={9,8,7,6,5,4,3,2,1,0}; RecType R[MAXE]; for (i=0;i<n;i++) R[i].key=a[i]; printf("初始关键字: "); //输出初始关键字序列 for (k=0;k<n;k++) printf("%2d",R[k].key); printf("\n"); BubbleSort(R,n); printf("最后结果: "); //输出初始关键字序列 for (k=0;k<n;k++) printf("%2d",R[k].key); printf("\n"); } (2) 结果如下图所示:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服