预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

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

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

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

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

--昆明理工大学信息工程与自动化学院学生实验报告(201—201学年第一学期)课程名称:数据结构开课实验室:年月日年级、专业、班学号姓名成绩实验项目名称排序算法指导教师教师评语教师签名:年月日一.实验内容:排序算法,包括直接插入排序,希尔排序,冒泡排序,快速排序,直接选择排序,堆排序等等。二.实验目的:1.掌握各种查找算法理解和实现;2.增强上机编程调试能力三.主要程序代码分析:voidInsertSort(DataTypea[],intn)//直接插入排序{inti,j;DataTypetemp;//temp是监视哨for(i=0;i<n-1;i++)//依次插入a[2],,,a[n-1]{temp=a[i+1];j=i;while(j>-1&&temp.key<a[j].key)//查找a[i]的插入位置{a[j+1]=a[j];//将关键字大于a[i].key的记录后移j--;}a[j+1]=temp;//插入a[i]}}voidSelectSort(DataTypea[],intn)//选择排序{inti,j,small;DataTypetemp;for(i=0;i<n-1;i++)//做n-1次选择排序{small=i;for(j=i+1;j<n;j++)//在当前无序区选关键字最小的记录a[small]if(a[j].key<a[small].key)small=j;if(small!=i){temp=a[i];a[i]=a[small];//交换a[i]和a[small]a[small]=temp;}}}voidBubbleSort(DataTypea[],intn)//冒泡排序{inti,j,flag=1;DataTypetemp;for(i=1;i<n&&flag==1;i++)//做n-1次排序{flag=0;for(j=0;j<n-1;j++)//从上往下扫描{if(a[j].key>a[j+i].key)//交换记录{flag=1;temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}}四.程序运行结果:五.实验总结:排序是数据处理中经常使用的一种重要运算。我们在以前程序设计的时候就接触过,但是经过这次上机实验,我对排序有了更深的认识。以下就是我对排序一些新的认识:冒泡排序属于稳定排序,是一种借助“交换”进行排序的方法。首先要将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个记录交换之,然后比较第二个记录与第三个记录的关键字,以此类推,直至第n-1个记录与第n个记录的关键字进行比较为止。直接插入排序属于稳定的排序,每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟将待比较的数值与它的前一个数值进行比较,当前一数值比待比较数值大的情况下继续循环比较,依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程,结束该次循环。选择排序属于不稳定排序,基本思想是每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。第i趟简单选择排序是指通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换。共需进行n-1趟比较,直到所有记录排序完成为止。希尔排序属于不稳定排序,也是一种属插入排序类,它的基本思想是:先将整个待排记录序列分割称为若干个子序列分别进行直接插入排序,待整个序列中记录“基本有序”时,再对全体记录进行一次直接插入排序。我们要在不断地学习中总结经验,要能够很好的掌握排序算法,这样一点一点的进步,我们的编程能力才回有所提高。