沈阳工程学院数据结构与算法实验报告排序.docx
- 文档编号:25184253
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:7
- 大小:29.13KB
沈阳工程学院数据结构与算法实验报告排序.docx
《沈阳工程学院数据结构与算法实验报告排序.docx》由会员分享,可在线阅读,更多相关《沈阳工程学院数据结构与算法实验报告排序.docx(7页珍藏版)》请在冰豆网上搜索。
沈阳工程学院数据结构与算法实验报告排序
沈阳工程学院
学生实验报告
(课程名称:
数据结构与算法)
实验题目:
排序
班级学号姓名
地点指导教师
实验日期:
年月日
一、实验目的
1.掌握常用的排序方法,并掌握用高级语言实现排序算法的方法。
2.深刻理解排序的定义和各种排序方法的特点,并能加以灵活运用。
3.了解各种方法的排序过程及其依据的原则,并掌握各种排序方法的时间复杂度的分析方法。
二、实验环境
TurboC或是VisualC++
三、实验内容与要求
实验1归并排序的实现
已知关键字序列为{1,8,6,4,10,5,3,2,22},请对此序列进行归并排序,并输出结果。
实验2要求使用两种不同的排序算法,将指定文件中的字符按行进行插入排序
说明:
除了使用下面介绍的直接插入排序算法之外,要求再使用一个自己熟悉的排序算法来实现此功能。
算法思路
【建立文件】建立一个文本文件IN.TXT,输入若干字符串(文件中的数据可自拟),每个串以回车结束。
【算法输入】从文件IN.TXT中按行读取字符并存入二维字符数组。
【算法输出】将排序后的二维字符数组输出到另一个文本文件OUT.TXT中。
【算法要点】先将指定文本文件IN.TXT中的数据按行读入一个二维字符数组;然后对该二维字符数组中的字符按行执行直接插入排序;最后将已排好序的数据按行写入另一个文本文件OUT.TXT中。
直接插入排序是一种最简单的排序方法,它的基本思想是在排序过程中,每次都将无序区中的第一条记录插入有序区中适当的位置,使其仍保持有序。
初始时,取第一条记录为有序区,其他记录为无序区。
显然,随着排序过程的进行,有序区不断扩大,无序区不断的缩小。
最终无序区变为空,有序区中包含了所有的记录,这时排序结束。
将无序区第一个记录x[i](i=1,2,3,…,n-1)插入有序区x[0]~x[i-1]时,可以先在有序区中找到插入位置j(1 更为有效的方法是将寻找插入位置和移动记录交替进行,即从有序区的后部开始,如果该位置m(m=i-l,i-2,…,1)的记录大于待插记录,则直接后移一位;待插记录则插入最后空出来的位置上。 算法中引入附加的变量k的作用是进入查找循环前,保存x[i]的副本(记录后移时会冲掉x[i]);在while循环中为了防止下标变量越界,可以加入break来自动控制while循环的结束。 四、实验过程及结果分析 #include"stdio.h" intnum=0; voidprint_data(intdata[],intfirst,intlast) { inti=0; for(i=0;i printf("*"); for(i=first;i<=last;i++) printf("%3d",data[i]); for(i=last;i<=8;i++) printf("*"); printf("\n"); } voidmerge(intarray[],intfirst,intlast)//一趟归并 { intmid,i1,i2,i3; inttemp[10]; inti,j; mid=(first+last)/2; i1=0;i2=first;i3=mid+1; while(i2<=mid&&i3<=last) { if(array[i2] temp[i1++]=array[i2++]; else temp[i1++]=array[i3++]; } if(i2<=mid) while(i2<=mid) temp[i1++]=array[i2++]; if(i3<=last) while(i3<=last) temp[i1++]=array[i3++]; for(i=first,j=0;i<=last;i++,j++) array[i]=temp[j]; print_data(array,first,last); } voidmergesort(intdata[],intfirst,intlast)//归并排序 { intmid; if(first { mid=(first+last)/2; mergesort(data,first,mid); mergesort(data,mid+1,last); print_data(data,first,last); merge(data,first,last); } } voidmain() { inta[]={1,8,6,4,10,5,3,2,22}; mergesort(a,0,8); } 运行结果: #include #include charxx[50][80]; intmaxline=0; voidreadtxt(void); voidselectsort(void); voidwritetxt(void); voidmain() {; readtxt(); selectsort(); writetxt(); } voidreadtxt(void) { FILE*fp;inti=0;char*p; fp=fopen("in.txt","r"); while(fgets(xx[i],80,fp)! =NULL) { p=strchr(xx[i],'\n'); if(p)xx[i][p-xx[i]]=0; i++; } maxline=i; fclose(fp); } voidwritetxt(void) { FILE*fp;inti; fp=fopen("out.txt","w"); for(i=0;i fprintf(fp,"%s\n",xx[i]); fclose(fp); } voidselectsort(void) { intn,i,j,len; chark; for(n=0;n { len=strlen(xx[n]); for(i=0;i { k=xx[n][i]; j=i-1; while(k { if(j<0) {break;} xx[n][j+1]=xx[n][j]; j--; } xx[n][j+1]=k; } } } 五、成绩评定 优 良 中 及格 不及格 出勤 内容 格式 创新 效果 总评 指导教师: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 沈阳 工程学院 数据结构 算法 实验 报告 排序