欢迎来到天天文库
浏览记录
ID:16377617
大小:113.13 KB
页数:12页
时间:2018-08-09
《数据结构课程设计 (1)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据结构课程设计题目利用随机函数产生30000个随机整数,利用插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序等排序方法进行排序,统计每一种排序上机所花费的时间,并和理论上时间进行对比分析。学生姓名学号学院专业指导教师年月日一、设计题目利用随机函数产生30000个随机整数,利用插入排序、起泡排序、快速排序、选择排序、堆排序、归并排序等排序方法进行排序,统计每一种排序上机所花费的时间,并和理论上时间进行对比分析。一、算法设计的思想1.简单选择排序操作方法:第一趟,从n个记录中找出关键码最小的记录与第一个记录交换;第二趟,从第二个记
2、录开始的n-1个记录中再选出关键码最小的记录与第二个记录交换;如此,第i趟,则从第i个记录开始的n-i+1个记录中选出关键码最小的记录与第i个记录交换,直到整个序列按关键码有序。【效率分析】空间效率:仅用了一个辅助单元。时间效率:简单选择排序中,所需进行记录移动的操作次数较小,其最小值为0,最大值为3(n-1)。然而,无论记录的初始排列如何,所需进行的关键字之间的比较次数相同,均为n(n-1)/2。因此,总的时间复杂度也是O(n2)。2.直接插入排序设有n个记录,存放在数组r中,重新安排记录在数组中的存放顺序,使得按关键码有序。即r[1].key
3、≤r[2].key≤……≤r[n].key先来看看向有序表中插入一个记录的方法:设1<j≤n,r[1].key≤r[2].key≤……≤r[j-1].key,将r[j]插入,重新安排存放顺序,使得r[1].key≤r[2].key≤……≤r[j].key,得到新的有序表,记录数增1。【效率分析】空间效率:仅用了一个辅助单元。时间效率:向有序表中逐个插入记录的操作,进行了n-1趟,每趟操作分为比较关键码和移动记录,而比较的次数和移动记录的次数取决于待排序列按关键码的初始排列。最好情况下:即待排序列已按关键码有序,每趟操作只需1次比较2次移动。总比较
4、次数=n-1次总移动次数=2(n-1)次最坏情况下:即第j趟操作,插入记录需要同前面的j个记录进行j次关键码比较,移动记录的次数为j+2次。平均情况下:即第j趟操作,插入记录大约同前面的j/2个记录进行关键码比较,移动记录的次数为j/2+2次。由此,直接插入排序的时间复杂度为O(n2)。是一个稳定的排序方法3.希尔排序(Shell’sSort)直接插入排序算法简单,在n值较小时,效率比较高,在n值很大时,若序列按关键码基本有序,效率依然较高,其时间效率可提高到O(n)。希尔排序即是从这两点出发,给出插入排序的改进方法。希尔排序方法:1.选择一个步
5、长序列t1,t2,…,tk,其中ti>tj,tk=1;2.按步长序列个数k,对序列进行k趟排序;3.每趟排序,根据对应的步长ti,将待排序列分割成若干长度为m的子序列,分别对各子表进行直接插入排序。仅步长因子为1时,整个序列作为一个表来处理,表长度即为整个序列的长度。希尔排序时效分析很难,关键码的比较次数与记录移动次数依赖于步长因子序列的选取,特定情况下可以准确估算出关键码的比较次数和记录的移动次数。目前还没有人给出选取最好的步长因子序列的方法。步长因子序列可以有各种取法,有取奇数的,也有取质数的,但需要注意:步长因子中除1外没有公因子,且最后一
6、个步长因子必须为1。希尔排序方法是一个不稳定的排序方法。4.冒泡排序冒泡排序方法:对n个记录的表,第一趟冒泡得到一个关键码最大的记录r[n],第二趟冒泡对n-1个记录的表,再得到一个关键码最大的记录r[n-1],如此重复,直到n个记录按关键码有序的表。【效率分析】空间效率:仅用了一个辅助单元。时间效率:总共要进行n-1趟冒泡,对j个记录的表进行一趟冒泡需要j-1次关键码比较。移动次数:最好情况下:待排序列已有序,不需移动。5.快速排序快速排序是通过比较关键码、交换记录,以某个记录为界(该记录称为支点),将待排序列分成两部分。其中,一部分所有记录的
7、关键码大于等于支点记录的关键码,另一部分所有记录的关键码小于支点记录的关键码。我们将待排序列按关键码以支点记录分成两部分的过程,称为一次划分。对各部分不断划分,直到整个序列按关键码有序。【效率分析】空间效率:快速排序是递归的,每层递归调用时的指针和参数均要用栈来存放,递归调用层次数与上述二叉树的深度一致。因而,存储开销在理想情况下为O(log2n),即树的高度;在最坏情况下,即二叉树是一个单链,为O(n)。时间效率:在n个记录的待排序列中,一次划分需要约n次关键码比较,时效为O(n),若设T(n)为对n个记录的待排序列进行快速排序所需时间。理想情
8、况下:每次划分,正好将分成两个等长的子序列,则T(n)≤cn+2T(n/2)c是一个常数≤cn+2(cn/2+2T(n/4))=2cn+
此文档下载收益归作者所有