预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共14页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

南昌航空大学数学与信息科学学院实验报告各种排序的算法PAGE13南昌航空大学数学与信息科学学院实验报告课程名称:数据结构实验名称:数据结构-排序方法设计实验类型:验证性□综合性□设计性□实验室名称:数学实验室班级学号:08071213学生姓名:刘哲强任课教师(教师签名):成绩:实验日期:2010-11-29一、实验目的了解各种排序的算法,并且学习、实现、对比各种排序算法,掌握各种排序算法的优劣,以及各种算法使用的情况。二、实验用仪器设备、器材或软件环境计算机,win-tc,vc++6.0三、实验原理、方案设计、程序框图、预编程序等各种排序方法的代码和流程图如下:希尔排序:/*-------------希尔排序---------------------*/voidShellInsert(SqlistR,intdk){inti,j;for(i=dk+1;i<=n;++i)if(LT(R[i].key,R[i-dk].key)){R[0].key=R[i].key;for(j=i-dk;j>0&&LT(R[0].key,R[j].key);j-=dk)R[j+dk]=R[j];R[j+dk].key=R[0].key;}}快速排序程序:/*------------------------------快速排序-------------------------------*/intPartition(SqlistL,intlow,inthigh)/*一趟快速排序程序*/{intpivotkey;L[0].key=L[low].key;pivotkey=L[low].key;while(low<high){while(low<high&&L[high].key>=pivotkey)--high;L[low].key=L[high].key;while(low<high&&L[low].key<=pivotkey)++low;L[high].key=L[low].key;}L[low].key=L[0].key;returnlow;}voidQsort(SqlistL,intlow,inthigh)/*对顺序表L中的子序列L.r[low..high]作快速排序*/{intpivotloc;if(low<high){pivotloc=Partition(L,low,high);Qsort(L,low,pivotloc-1);Qsort(L,pivotloc+1,high);}}冒泡法排序:/*-----------------------------冒泡排序---------------------------------*/intmaopao(SqlistR){inti,j,m;intexchange;input(R);printf("请输入要输出第几趟结果:");scanf("\n%d",&m);for(i=1;i<n;i++){/*最多做n-1趟排序*/exchange=FALSE;for(j=1;j<=n-i;j++){if(R[j+1].key<R[j].key){R[0]=R[j+1];R[j+1]=R[j];R[j]=R[0];exchange=TRUE;}}if((i==m)||(!exchange)){printf("第%d趟的结果是:",m);print(R);printf("\n");printf("请输入还要输出第几趟结果,不想输出时请输入:");scanf("\n%d",&m);}if(!exchange)return(1);}printf("最终排序结果是:");print(R);printf("\n");getch();}直接插入排序:/*-----------------------直接插入排序----------------------------------*/voidInsertSort(SqlistR){inti,j;for(i=2;i<=n;i++){if(LT(R[i].key,R[i-1].key)){R[0]=R[i];R[i]=R[i-1];for(j=i-2;LT(R[0].key,R[j].key);j--)R[j+1]=R[j];R[j+1]=R[0];}printf("\n第%d趟的排序结果为:",i-1);print(R);}}选择排序:/*----------------------------选择排序--------------------------*/intSelectMinkey(SqlistR,inti){intk,j;KeyTypetemp;temp=R[i].key;k=i;for(j=n;j>=i;j--)if(R[j].key<temp){temp=R[j]