《2023年数据结构内排序实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年数据结构内排序实验报告.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、实验目的1、了解内排序都是在内存中进行的。2、为了提高数据的查找速度,需要对数据进行排序。3、掌握内排序的方法。二、实验内容1、设计一个程序exp 101.cpp实现直接插入排序算法,并输出 9,8,7,6,5,4,3,2,1,0 的排序过程。(1)源程序如下所示:文献名:exp 1 0-1.cpp#inc 1 ude#define MAXE 20”/线性表中最多元素个数t y p e d e f int KeyTy p e;t ypedef c har In f oTypel 0;t y ped e f s t ruct 记录类型(dKe y Ty p e key;超关键字项dnf o
2、T y p e d ata;M其他数据项,类型为I n f oTy p e Re c Type;void Insert S o r t(R e c T ype R,i n t n)/对 R 0 n-1按递增有序进行直接插入排序(“n t i,j,k;BR e cType temp;d f or(i=l;i=0&t e mp.k e yRj.k e y)j+1=RU;”/将关键字大于R i.k e y 的记录后移j)Rj+l=t e m p 在 j+1 处插入 R i。pr i ntf(i=%d,i)泸。/输出每一趟的排序结果p r in t f(插入 d,结果为:,tem p);f o r(k
3、=0;kn;k+)ogprin t f(%3d ,R k.key);prin t f(n);)vo i d m a in()int i,k,n=l 0;KeyType a=9,8,7,6,5,4,3,2,1,0;oRecType R MAXE;fo r(i=0;i n;i+)R i.k e y=ai;prin t f(“初始关键字:);/输出初始关键字序列for(k=0;kn;k+)pr i nt f(%3 d ,R k.k e y);printf(n);InsertSor t(R,n);P rintf(最后结果:);。输出初始关键字序列for(k=0;k一臣一臣一臣一引一日二口二日二目一日日
4、n、云一冠冠五冠冠军君萄3kSAn二-nS21234567894e初L=i=L=L=i=L=787654698?7987210354321498?6244449876133333987690222222987111111198000000009continue4322463874364782、设计一个程序exp 10 2.c p p 实现希尔插入排序算法,并输出 9,8,7,6,5,4,3,2,1,0 的排序过程。(1)源程序如下所示:文献名:e xplO 2.cpp#inclu d e#d efi n e MAXE 20。/线性表中最多元素个数typedef int Key T y pe;t
5、yp e d e f c h a r InfoT y p e10;t ypede f str u ct/记录类型(K e yType k e y;#关键字项Info T y p e data;。/其他数据项,类型为 InfoType R e cType;void Shell S ort(R e cType R,i n t n)o 希尔排序算法int i,j,d,k;R e c T y p e temp;d=n/2;。”/d 取初值 n/2w h ile(d0)(wfor(i=d;i=0&R j.keyRj+d.key)d d tern p=R j;Rj与 Rj+d互换,Rj=Rj+d;3 R
6、j+d=t emp;s j=j-d;8 )P rintf(d=%d:”,d);。输出每一趟的排序结果f o r(k=0;kn;k+)。p rintf(%3d,Rk.key);。叩 r i ntf(n);d=d/2;/递减增量d)v o id main()“nt i,k,n=10;KeyTy p e a=9,8,7,6,5,4,3,2,1,0;R e cType RMAXE;for(i=0;in;i+)R i.ke y=ai;P r i ntf(初始关键字:);。/输出初始关键字序列f or(k=0;k n;k+)printf(%3d,R kJ.key);p rin t f(n );Shell
7、S ort(R,n);prin t f(“最后结果:,);/输出初始关键字序列for(k=0;k n;k+)。p rin t f(%3d,Rk.key);pri n tf(n n );)(2)结果如下图所示:初 始 关 键 字:9 8 7 6 5 4 3 2 1 0d=5:4321098765d=2:0123456789d=l:0123456789最后结果:0123456789Press any key to continue-3、设计一个程序e xplO3.cpp实现冒泡排序算法,并输出 9,8,7,6,5,4,3,2,1,0)的排序过程。(1)源程序如下所示:文献名:e x pl 0-3.
8、c p p#i n clud e#def i n e MAXE 2 0。/线性表中最多元素个数typedef int Ke y Typ e;t ypedef char I n f oType 10;ty p e d e f str u c t。记录类型K e yType key;/关键字项I n f oT y p e d at a;/其他数据项,类型为Inf o Ty p e Rec Type;v o id B u b b 1 eSo rt(RecT y pe R,i nt n)/冒泡排序算法(。i n t i,j,k;RecT y pe temp;f o r(i=0;ii;j-)”/比较,找
9、出本趟最小关键字的记录if(Rj.keyR j-l.key)d o 0。temp=R E j;Rj 与 进 行 互 换,将最小关键字记录前移 RLj=R E J-1;Rj-l=temp;)prin t f(”i=%d,冒出的最小关键字:d,结 果 沏”,i,Ri.key);/输出每一趟的排序结果for(k=0;kn;k+)oo print f(”%2 d ,Rk.key);pri ntf(n);)void m a in()int i,k,n=10;KeyTyp e a=9,8,7,6,5,4,3,2,1,0;RecTypeR MAXE;fo r(i=0;in;i+)R i.k e y=a i ;op rint f(初始关键字:);输出初始关键字序列for(k=0;k n;k+)pr i ntf(%2d,R Ek.key);p r i n t f(n);Bubb 1 e Sort(R,n);p r intf(最后结果:“);”/输出初始关键字序列for(k=0;km力=iiiii16,7,8,后esli=|1=曰取pr