《2023年数据结构内排序实验报告.docx》由会员分享,可在线阅读,更多相关《2023年数据结构内排序实验报告.docx(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 t y p e d e f int KeyTy p e;#define MAXE 20。线性表中最多元素个数t ypedef c har In f oTypel 0 ;t y ped e f s t ruct记录类型(dKe y Ty p e key;关键字项“n
2、f o T y p e d ata; ”/其他数据项,类型为Inf oTy p e Re c Type;void Insert S o r t(R e cType R口,i n t n ) / /对 R 0 n - 1 按递增有序进行直接插入排序(“nt i , j,k;e cType temp;s f or ( i =l;i=0 & t e mp. k e yRj .key)gR E j +l=Rj;。/将关键字大于R i. key的记录后移8。j -; Ri+l=t e m p y 在 j +1 处插入 R i ,pr i ntf(n i =%d,”,i)产/ /输出每一趟的排序结果p r
3、 in t f(”插入(1,结果为temp);o f o r ( k =0; k n;k+)oaprin t f(n%3d H ,R k . k e y);叩rin t f(nnn); vo i d m a in()int i , k 9n=l 0 ;KeyType a=9, 8 ,7, 6,5,4,3 ,2,1,0;dRecTyp e R MAXE;fo r (i= 0 ; i n; i +)gR i .k e y=ai;print f初始关键字:-);/输出初始关键字序列ofor (k=0; kn; k+),pr i nt f ( % 3 d ,R k. k e y);dInsertSor
4、 t ( R,n);P rintf L最后结果:);/输出初始关键字序列for (k=0;k_ rrn - rrn 一 m 一 m - rrn 一 rrn - m - rrTJ _3_11 口 An * 二-n s nx-123456789Fe 反r i i i .1 -1 i i i 三耳 p个程序explO2 . c p p实现希尔插入排序算法,并输出9, 8,设计2、0的排序过程。(1)源程序如下所示:文献名:e xplO 2.cpp#inclu d e # d efi n e MAXE 20/线性表中最多元素个数typedef int Key T y pe;typ e d e f ch
5、artyp e d e f charInfoT y pe10;t ypede f str u ct/记录类型K e yType key;。关键字项3111fo Typedata; 。/其他数据项,类型为I n foType R e cType;void Shell S ort(R e cType R ,i n t n)/希尔排序算法nnt i, j , d, k;R e c T y p e temp;d = n/2;oo ”/d 取初值 n/2dw hile (d0)(0aafor (i=d;i=0 & R j .keyRj+d.key)g g。tem p =R j;Rj与 Rj+d互换,Rj
6、 =Rj +d;3Rj+d= t emp;o j=j-d;g 。printf(nd=%d: ,d);。输出每一趟的排序结果df or(k=0;kn;k+)3 dp r intf(,%3d,Rk. key);gp r i ntf(nnn);d=d/2;/ /递减增量d)v o id main()dint 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 + + )
7、printf(H%3d n, R kJ. key);sprint f (n nn);Shell S ort(R,n );prin t f(n后结果:输出初始关键字序列for (k=0; k n ; k+),p rin t f(n%3d,Rk .key);pri n tf (nn n n );(2)结果如下图所示:初始天键字:9876543210d =5:4321098765d=2:0123456789d=l: 0123456789重后结果:0123456789Press any key to continue.3、设计一个程序e xplO3. cpp实现冒泡排序算法,并输出 9,8, 7,6,
8、5 A3, 2/,0)的排序过程。(1)源程序如下所示:文献名:e x pl 0 -3. c p p# i n clud e # def i n e MAXE 20 / /线性表中最多元素个数typedef int Ke y Typ e ;t ypedef char In f oType 10;ty p e d e f str u c t/记录类型dK e yType key;/关键字项I n f oT y p e d at a ;/其他数据项,类型为Inf OType Rec Type;v o id B u b b 1 eSo rt(RecT y pe R口,i nt n)。/ / 冒泡排序
9、算法, int i,j,k;sRecT y pe temp; e f o r (i=0;ii;卜)。比较,找出本趟最小关键字的记录。两f (Rj.keyR Ej-l.key)g ( 0,temp= R j ; /Rj 与进行互换,将最小关键字记录前移Rj =R j -1;Rj -l=temp; prin t f (n i =% d,冒出的1prin t f (n i =% d,冒出的1外关键字:%d,结果为:H,i,Ri.ke y);输出每一趟的排序结果for (k = 0; kn;k+) g print f (n% 2 d ”,Rk. key); gprintf ( nH);void m a
10、 m() dint i, k,n=10;Keylyp e a = 9,8,7,6, 5, 4,3,2, 1,0;RecTypeR MAXE;f o r ( i = 0 ;in;i+)R i.k e y=a i ;3 p rint f初始关键字:”);斶出初始关键字序列 afor ( k =0;k n ;k+)pr i ntf(%2d,R k.key);叩 r i n t f(nnn);Bubb 1 e Sort(R,n);p r intf (最后结果:“);”/输出初始关键字序列for (k=0;k n k+ )p r in t f(H%2dfRk .key);叩 rintf(n);)(2)结果如下图所示:127897734678 9444448922222229111111111 0:0:0:0:0:0:0:0:0:0my nr-l-nF my my mF my rnY mF 7 3 身Eh Eh Eh Eh Eh Eh Eh 身 土口土口土口土口土口土口土口土口土口 65 5012345678 6$=x:x:x=x:x:聚一 7 rfH.- rfH.- 隹卷卷镂隹卷卷卷隹2关关关关关关关关关:日雪譬譬薯取 子: 键出出出出出出出出出果 关冒冒冒冒冒冒冒冒4口 ,/ , , , / ,二-rf 力 0123456781 =-3氐 、不 i i i i i i i i i 三耳