(完整word版)数据结构上机实验报告排序方法(word文档良心出品)_第1页
(完整word版)数据结构上机实验报告排序方法(word文档良心出品)_第2页
(完整word版)数据结构上机实验报告排序方法(word文档良心出品)_第3页
(完整word版)数据结构上机实验报告排序方法(word文档良心出品)_第4页
(完整word版)数据结构上机实验报告排序方法(word文档良心出品)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、南昌航空大学数学与信息科学学院实验报告 各种排序的算法 南昌航空大学 数学与信息科学学院 实 验报告 课程名称: 数据结构 实验名称: 数据结构-排序方法设计 实验类型: 验证性口综合性口设计性口 实验室名称: 数学实验室 班级学号: 08071213 学生姓名: 刘哲强 任课教师(教师签名): 成 绩: 实验日期: 2010-11-29 一、实验目的 了解各种排序的算法,并且学习、实现、对比各种排序算法, 掌握各种排序算法的优劣,以及各种算法使用的情况。 二、实验用仪器设备、器材或软件环境 计算机,win-tc,vc+6.0 三、实验原理、方案设计、程序框图、预编程序等 各种排序方法的代码和

2、流程图如下: 1.希尔排序: /* 希尔排序*/ void Shelll nsert(Sqlist R,i nt dk) int i,j; for(i=dk+1;i0j-=dk) Rj+dk=Rj; Rj+dk.key=RO.key; 10 希尔排序 主函数流程图 希尔排序 进行一趟的函数程序 over 2快速排序程序: /* 快速排序*/ int Partitio n(Sqlist L,i nt low,i nt high)/*一趟快速排序程序 */ int pivotkey; L0.key=Llow.key; pivotkey=Llow.key; while(lowhigh) while(

3、low=pivotkey) -high; Llow.key=Lhigh.key; while(lowhigh Lhigh.key=Llow.key ; Llow.key=L0.key; return low; void Qsort(Sqlist L,int low,inthigh) /*对顺序表 L 中的子序列 L.rlow.high 作快速排序*/ int pivotloc; if(lowhigh) pivotloc=Partiti on( L,low,high); Qsort(L,low,pivotloc-1); Qsort(L,pivotloc+1,high); 快速排序流程图 Qsor

4、t函数 int pivotloc; Partitio n 函数 TV mai n函数 getch(); getch(); 3. 冒泡法排序: /* 冒泡排序*/ int maopao(Sqlist R) int i,j,m; int excha nge; in put(R); printf(”请输入要输出第几趟结果:”); scan f(n%d, for(i=1;i n; i+) /*最多做n-1趟排序*/ excha nge=FALSE; for (j=1;j=n _i;j+) if (Rj+1.keyRj.key) R0=Rj+1; Rj+1=Rj; Rj=R0; excha nge=TR

5、UE; if(i=m)|(!excha nge) printf(第%d趟的结果是:”,m); prin t(R); prin tf(n); printf(请输入还要输出第几趟结果,不想输出时请输入:); sca nf(n %d, if(!excha nge) return(1); printf(最终排序结果是:”); prin t(R); prin tf(n ”); getch(); 4. 直接插入排序: /* 直接插入排序*/ void InsertSort(Sqlist R) int i,j; for(i=2;i=i;j-) if(Rj.keytemp) temp=Rj.key; k=j;

6、 return k; void SelectSort(Sqlist R) int i,j; for(i=1;i=n ;i+) j=SelectMi nkey(R,i); if(i!=j) R0=Ri; Ri=Rj; Rj=R0; printf(n第%d趟的排序结果为:,i); prin t(R); 6. 堆排序: /*堆排序 */ void HeapAdjust(Sqlist R,int s,int m) RedType rc; int j; rc=Rs; for(j=2*s;j=m;j*=2) if(j0;-i) HeapAdjust(R,i, n); for(i=n;i1;-i) rc=R

7、1; R1=Ri; Ri=rc; HeapAdjust(R,1,i-1); /HeapSort 7. 主函数: /*-main 函*/ void main()/*开始主函数*/ int i,dk=5,3,1; for(;)/* 开始 for 循环 */ switch (me nubar() case 1:printf(n欢迎使用冒泡排序n); maopao(R); system(CLS); break; case 2:printf(n欢迎使用快速排序n); in put(R); Qsort(R,1, n); prin tf(n最终的排序结果为:); prin t(R); getch(); sy

8、stem(CLS); break; case 3:printf(n欢迎使用希尔排序n); in put(R); for(i=0;i J.-J.十.-J.十.-J.-J. !.- m Ll-Tm Lr-rm Ll-Tm LI-Tm Ll-Tm Lr-rHI/BL.FB1/BLr-r B一.-!三.-rB一.-!E _.-rB一.-!E _.-rB一.-!E _.-rB一.-!E _.-r 士口士口士口士口士口士口士口士口士口士口 .2 .- .2 .- .2 .- .2 .- .2 .- .2 .- .2 .- .2 .- .2 .- .2 .- 3J-IHJ-IHJ- lr*lT IHJ- IHJ- IHJ- 趟趟趟趟趟趟趟趟趟终 123456789 3- 幕賣灵菇幕幕幕幕幕E 6)简单选择排序: 5 7)堆排序: 帘根据你想执行的命令,输入对应的旷6的数劣 最终的排序结果为: 13 38 49 49 8)退出排序程序: E注编程 1(:+10己11111七七-we h谢您的使用 五、心得体会 排序是计算机程序设计中的一种重要操作,它的功能是 将一个数据元素(或记录)的任意序列,重新排列成一个按 关键字有序的序列。 通过这次上机实验,增加了我学习算法的兴趣,虽然还 不是很懂,但从 C语言这门课程开始,已发现程序设计的乐 趣,在上机过程中中犯的一些错误还会

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论