ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:18.83KB ,
资源ID:24930614      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24930614.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(支付数据结构实验实例.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

支付数据结构实验实例.docx

1、支付数据结构实验实例目录一、实验题目-1二、实验目的-1三、实验内容-1四、实验要求-1五、实验环境-1六、实验过程-1七、实验结果-9一、实验题目排序算法验证二、实验目的1掌握常用排序方法的基本思想及其实现技术2了解各种排序方法的优缺点和适用范围三、实验内容实现冒泡排序、直接插入排序、选择排序和快速排序,并比较各种排序算法的运行速度。四、实验要求1采用顺序表存放排序的记录,设关键字类型为典型。2设计一个菜单,以菜单方式选择上述排序方法。3程序执行时,能按趟输出排序的结果。4对每种基本排序方法改进算法,再给出改进算法前后的实验结果:(1)随机生成10个随机数进行排序的结果;(2)分别给出升序和

2、降序的随机数排序的结果。5对上述四种算法给出结论性意见,说明改进算法后的效果明显或不明显的原因。五、实验环境软件需求:C语言硬件需求:微型计算机六、实验过程1实验步骤(1)理解顺序表排序的基本实验原理;(2)仔细分析实验内容,给出其算法和流程图;(3)用C语言实现该算法;(4)给出测试数据,并分析其结果;(5)在实验报告册上写出实验过程。2算法步骤(1)文件的类型说明typedef struct keytype key; infotype otherinfo; rectype; typedef rectype seqlistn+1; (2)主函数调用void main() 生成需要排序的关键字

3、,选择调用各排序的算法;(3)算法调用void insertsort(); 插入排序算法,输入趟数,按趟输出排序的结果;void rubblesort(); 起泡排序算法,输入趟数,按趟输出排序的结果;void quicksort(int low,int high); 快速排序算法,调用int partition(int i,int j)函数对Rlow到Rhigh做划分,输入趟数,按趟输出排序的结果;void selectsort(); 选择排序算法,输入趟数,按趟输出排序的结果;(4)返回主函数3算法修改随机生成10个随机数进行升序和降序的随机数排序的程序如下:#include stdio.

4、h#include stdlib.h1#define n 10 #define FALSE 0 #define TRUE 1 #define Maxsize 100typedef int keytype;typedef char infotype;typedef struct keytype key; infotype otherinfo; rectype; typedef rectype seqlistn+1;typedef rectype temlistn+1;int VMaxsizen+1;int m,num; int a=1,b=1;seqlist R;temlist T;void i

5、nsertsort(); void rubblesort(); void quicksort(); void quicksort2();void selectsort(); int partition(int i,int j); int partition2(int i,int j);void main() seqlist s; temlist u; int i; char ch1,ch2; for(i=1;i=n;i+) si.key=rand()%1000; for(i=1;i=n;i+) ui.key=si.key; printf(Have generated randomly 10 s

6、ort numbers:n); for(i=1;i=n;i+)printf(%5d,si.key);printf(n); ch1=y; while(ch1=y|ch1=Y) printf(*Menu*n); printf(Please select option:n); printf( 1-Updata data-n); printf( 2-Insert sort-n); printf( 3-Rubble sort-n); printf( 4-Quick sort-n); printf( 5-Select sort-n); printf( 6-Quit sort-n); 2 printf(Pl

7、ease select operating type:); scanf(n%c,&ch2); switch(ch2) case1: for(i=1;i=n;i+) si.key=rand()%1000; printf(Have again generated randomly 10 sort numbers:n); for(i=1;i=n;i+) printf(%5d,si.key); printf(n); for(i=1;i=n;i+) ui.key=si.key; break; case2: printf(Please enter number of times for result:);

8、 scanf(%d,&m); for(i=1;i=n;i+) Ri.key=si.key; Ti.key=ui.key; insertsort(); break; case3: printf(Please enter number of times for result:); scanf(%d,&m); for(i=1;i=n;i+) Ri.key=si.key; Ti.key=ui.key; rubblesort(); break; case4: printf(Please enter number of times for result:); scanf(%d,&m); for(i=1;i

9、=n;i+) Ri.key=si.key; Ti.key=ui.key; num=0; quicksort(1,n); quicksort2(1,n); break; case5: printf(Please enter number of times for result:); scanf(%d,&m); for(i=1;i=n;i+) Ri.key=si.key; 3 Ti.key=ui.key; selectsort(); break; case6: ch1=n; break; default: ch1=n; void insertsort() int i,j,k; for(i=2;i=

10、n;i+) if(Ri.keyRi-1.key) R0=Ri; j=i-1; while(R0.keyTi-1.key) T0=Ti; j=i-1; while(T0.keyTj.key) Tj+1=Tj; j-; Tj+1=T0; if(i-1=m) printf(The ascending result is:%dn,m); for(k=1;k=n;k+) printf(%5d,Rk.key); printf(n); printf(The descending result is:%dn,m); for(k=1;k=n;k+) printf(%5d,Tk.key); printf(n);

11、printf(Continue? Exit to press 0:n); scanf(%d,&m); 4 if(m!=0) printf(The ascending sort result is:n); for(k=1;k=n;k+) printf(%5d,Rk.key); printf(n); printf(The descending sort result is:n); for(k=1;k=n;k+) printf(%5d,Tk.key); printf(n); void rubblesort()int i,j,k; int exchange,exchange2; for(i=1;i=i

12、;j-) if(Rj+1.keyTj.key) T0=Tj+1; Tj+1=Tj; Tj=T0; exchange2=TRUE; if(i=m) printf(The ascending result is:%dn,m); for(k=1;k=n;k+) printf(%5d,Rk.key); printf(n); printf(The descending result is:%dn,m); for(k=1;k=n;k+) printf(%5d,Tk.key); printf(n); printf(Continue? Exit to press 0:n); scanf(%5d,&m); if

13、(!exchange)&(!exchange2)|(m=0)5 break; if(m!=0) printf(The ascending sort result is:n); for(k=1;k=n;k+) printf(%5d,Rk.key); printf(n); printf(The descending sort result is:n); for(k=1;k=n;k+) printf(%5d,Tk.key); printf(n); int partition(int i,int j)int c=1; rectype pivot=Ri; while(ij) while(i=pivot.

14、key) j-; if(ij) Ri+=Rj; while(ij&Ri.key=pivot.key) i+; if(ij) Rj-=Ri; Ri=pivot; for(b=1;b=n;b+) Vab=Rc.key; c+; a+; return i;void quicksort(int low,int high)int pivotpos; if(lowhigh) pivotpos=partition(low,high); quicksort(low,pivotpos-1); quicksort(pivotpos+1,high); int partition2(int i,int j)recty

15、pe pivot=Ti; while(ij)6 while(ij&Tj.key=pivot.key) j-; if(ij) Ti+=Tj; while(i=pivot.key) i+; if(ij) Tj-=Ti; Ti=pivot; return i;void quicksort2(int low,int high)int pivotpos,k; if(lowhigh) pivotpos=partition2(low,high); num+; if(num=m) printf(The ascending sort result is:%dn,m); for(k=1;k=n;k+) while

16、(Vmk=0) m-; printf(%5d,Vmk); printf(n); printf(The descending sort result is:%dn,m); for(k=1;k=n;k+) printf(%5d,Tk.key); printf(n); printf(Continue? Exit to press 0:n); scanf(%5d,&m); quicksort2(low,pivotpos-1); quicksort2(pivotpos+1,high); if(m!=0&Vmk=0) if(low=1&high=n) printf(The ascending sort r

17、esult is:n); for(k=1;k=n;k+) while(Vmk=0) m-; printf(%5d,Vmk); printf(n); printf(The descending sort result is:n); for(k=1;k=n;k+) printf(%5d,Tk);7 printf(n); while(m!=0&Vmk!=0) printf(The ascending sort result is:n); for(k=1;k=n;k+) printf(%5d,Vmk); printf(n); printf(The descending sort result is:n

18、); for(k=1;k=n;k+) printf(%5d,Tk); printf(n); printf(Continue? Exit to press 0:n); scanf(%5d,&m); void selectsort()int i,j,k,h; for(i=1;in;i+) h=i; for(j=i+1;j=n;j+) if(Rj.keyRh.key) h=j; if(h!=i) R0=Ri; Ri=Rh; Rh=R0; for(j=i+1;jTh.key) h=j; if(h!=i) T0=Ti; Ti=Th; Th=T0; if(i=m) printf(The ascending

19、 result is:%dn,m); for(k=1;k=n;k+) printf(%5d,Rk.key); printf(n); printf(The descending result is:%dn,m); for(k=1;k=n;k+)8 printf(%5d,Tk.key); printf(n); printf(Continue? Exit to press 0:n); scanf(%5d,&m); if(m!=0) printf(The ascending sort result is:n); for(k=1;k=n;k+) printf(%5d,Rk.key); printf(n)

20、; printf(The descending sort result is:n); for(k=1;k=n;k+) printf(%5d,Tk.key); printf(n); 七、实验结果1排序思想:(1)插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的文件中的适当位置,直到全部记录插入完成为止。(2)起泡排序(Rubble Sort)的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。 3)快速排序(Quick Sort)又称划分交换排序。其基本思想是:在当前无序区R1到R

21、h中任取一个记录作为比较的“基准”(不妨记为temp),用此基准将当前的无序区划分为左右两个较小的无序子区:R1到Ri-1和Ri+1到Rh,且左边的无序子区中记录关键字均小于或等于基准temp的关键字,右边的无序子区中记录的关键字均大于或等于基准temp的关键字,而基准temp则位于最终排序的位置上,即: R1到Ri-1中关键字=temp.key=Ri+1到Rh的关键字(1=i=h) 当R1到Ri-1和Ri+1到Rh均非空时,分别对它们进行上述的划分过程,直到所有的无序子区中记录均已排好序为止。(4)选择排序(Selection Sort)的基本方法是:每一趟从待排序的记录中选出关键字最小的记

22、录,顺序放在排好序的子文件的最后,直到全部记录排序完毕。2运行结果:(1)第一次生成随机数排序结果:Have generated randomly 10 sort numbers: 41 845 460 67 568 60 709 967 529 968*Menu*Please select option: 1-Updata data- 2-Insert sort- 3-Rubble sort- 4-Quick sort- 5-Select sort-6-Quit sort-9Please select operating type:210The ascending sort result i

23、s: 41 60 67 460 529 568 709 845 967 968The descending sort result is: 968 967 845 709 568 529 460 67 60 41*Menu*Please select option: 1-Updata data- 2-Insert sort- 3-Rubble sort- 4-Quick sort- 5-Select sort- 6-Quit sort-Please select operating type:310The ascending sort result is: 41 60 67 460 529 568 709 845 967 968The descending sort result is: 968 967 845 709 568 529 460 67 60 41*Menu*Please select option: 1-Updata data- 2-Insert sort- 3-Rubble sort- 4-Quick sort- 5-Select sort- 6-Quit sort-Please select operating type:48The ascending sort result is: 41 60 67 460 529 568 709 845 967

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1