欢迎来到天天文库
浏览记录
ID:35214280
大小:128.50 KB
页数:4页
时间:2019-03-21
《内部排序算法的实现的实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、班级学号姓名实验组别试验日期室温报告日期成绩报告内容:(目的和要求、原理、步骤、数据、计算、小结等)实验名称:内部排序算法的实现实验目的;掌握直接插入排序,希尔排序,快速排序的实现。实验环境(硬/软件要求):Windows2000,VisualC++6.0实验内容:对于给定的某无序序列,分别用直接插入,希尔排序,快速排序等方法进行排序,并输出每种排序下的各趟排序结果。各排序算法输入的无序序列为:265371611159154819。实验要求:编程实现直接插入排序,希尔排序,快速排序各算法函数;并编写主函数对各排序函数进行测试。【C语言源程序】#include#inclu
2、de#definesize11typedefchardatatype;//记录的其他域的类型,根据需要更改typedefstruct{intkey;datatypeothers;//记录的其他域}rectype;//*为插入排序算法*/voidINSERTSORT(rectypeR[])//对数组R按递增序进行插入排序,R[0]是监视哨{inti,j;for(i=2;i<=size;i++)//依次插入R[2],…,R[n]{R[0]=R[i];j=i-1;while(R[0].key3、关键字大于R[i].key的记录后移R[j+1]=R[0];//插入R[i]}}/*希尔排序算法*/voidSHELLSORT(rectypeR[],intn){inti,j,h;rectypetemp;h=n/2;while(h>0){for(j=h;j<=n-1;j++)/*R[h+d]~R[n+d-1]插入当前有序区*/{temp=R[j];/*保存待插入记录*/i=j-h;while((i>=0)&&temp.key4、*/}/*本趟排序完成*/h=h/2;}/*增量为1排序后终止算法*/}/*SHELLSORT*//*快速排序算法*/intPARTITION(rectypeR[],intl,inth)/*返回划分后被定位的基准记录的位置*//*对无序区R[l]~R[h]做划分*/{inti,j;rectypetemp;i=l;j=h;temp=R[i];/*初始化,temp为基准*/do{while((R[j].key>=temp.key)&&(i5、e((R[i].key<=temp.key)&&(i6、CKSORT(R,s1,i-1);/*递归处理左区间*/QUICKSORT(R,i+1,t1);/*递归处理右区间*/}}/*QUICKSORT*//*主函数*/voidmain(){rectypeR[size];inti;/*插入排序*/printf("请输入使用插入算法排序的10个数据");for(i=1;i7、;i
3、关键字大于R[i].key的记录后移R[j+1]=R[0];//插入R[i]}}/*希尔排序算法*/voidSHELLSORT(rectypeR[],intn){inti,j,h;rectypetemp;h=n/2;while(h>0){for(j=h;j<=n-1;j++)/*R[h+d]~R[n+d-1]插入当前有序区*/{temp=R[j];/*保存待插入记录*/i=j-h;while((i>=0)&&temp.key4、*/}/*本趟排序完成*/h=h/2;}/*增量为1排序后终止算法*/}/*SHELLSORT*//*快速排序算法*/intPARTITION(rectypeR[],intl,inth)/*返回划分后被定位的基准记录的位置*//*对无序区R[l]~R[h]做划分*/{inti,j;rectypetemp;i=l;j=h;temp=R[i];/*初始化,temp为基准*/do{while((R[j].key>=temp.key)&&(i5、e((R[i].key<=temp.key)&&(i6、CKSORT(R,s1,i-1);/*递归处理左区间*/QUICKSORT(R,i+1,t1);/*递归处理右区间*/}}/*QUICKSORT*//*主函数*/voidmain(){rectypeR[size];inti;/*插入排序*/printf("请输入使用插入算法排序的10个数据");for(i=1;i7、;i
4、*/}/*本趟排序完成*/h=h/2;}/*增量为1排序后终止算法*/}/*SHELLSORT*//*快速排序算法*/intPARTITION(rectypeR[],intl,inth)/*返回划分后被定位的基准记录的位置*//*对无序区R[l]~R[h]做划分*/{inti,j;rectypetemp;i=l;j=h;temp=R[i];/*初始化,temp为基准*/do{while((R[j].key>=temp.key)&&(i5、e((R[i].key<=temp.key)&&(i6、CKSORT(R,s1,i-1);/*递归处理左区间*/QUICKSORT(R,i+1,t1);/*递归处理右区间*/}}/*QUICKSORT*//*主函数*/voidmain(){rectypeR[size];inti;/*插入排序*/printf("请输入使用插入算法排序的10个数据");for(i=1;i7、;i
5、e((R[i].key<=temp.key)&&(i6、CKSORT(R,s1,i-1);/*递归处理左区间*/QUICKSORT(R,i+1,t1);/*递归处理右区间*/}}/*QUICKSORT*//*主函数*/voidmain(){rectypeR[size];inti;/*插入排序*/printf("请输入使用插入算法排序的10个数据");for(i=1;i7、;i
6、CKSORT(R,s1,i-1);/*递归处理左区间*/QUICKSORT(R,i+1,t1);/*递归处理右区间*/}}/*QUICKSORT*//*主函数*/voidmain(){rectypeR[size];inti;/*插入排序*/printf("请输入使用插入算法排序的10个数据");for(i=1;i7、;i
7、;i
此文档下载收益归作者所有