资源描述:
《排序算法的实现数据结构报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划排序算法的实现数据结构报告 合肥学院 计算机科学与技术系 课程设计报告 XX~XX学年第学期 课 学 学 专 指业导班教生姓程数据结构与算法内部排序算法比较名号级师课程设计名称 XX年1月 【课题22、】内部排序算法比较 一、问题分析和任务定义 各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。试通过随机的数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。根据对本设计任务要求的理解和分析,按以下两点问题进行
2、分析: 题目要求对十种排序算法进行比较,比较的主要内容是关键字的比较次数和移动次数,其中待排序数用。目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 二、数据结构的选择和概要设计 为了实现十种排序算法,产生的随机数用顺序表存储比较方便。顺序表数据类型描述如下: typedefintKeyType; structrec { KeyTypekey; }; typedefrecsqli
3、st[N]; 2.主程序与各模块之间的关系是: (1)voidgensort(intb[],intn)起泡排序 (2)voidinsertsort(sqlistb,intn)插入排序 (3)voidso(sqlistnum,intn)折半插入排序 (4)voidshellsort(sqlistb,intn)希尔排序 (5)voidgentsort(intb[],intn)选择排序 (6)voidoutput(sqlistb,intn)快速排序 (7)voidsort3(sqlistnu,intn)//2-路插入排序 (8)voidMerge(sqlista,sqli
4、stb,intlow,intmid,inthigh)二路归并排序 (9)voidMergePass(sqlista,sqlistb,intn,intlenth)一趟归并排序目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 (10)voidMergeSort(sqlista,intn)//进行二路归并 (11)voidsift(sqlistr,ints,intm)堆(转载于:写论文网:排序算法
5、的实现数据结构报告)排序 (12)voidinit(inta[])//随机生成N个整数 三、详细设计和编码 在整个课程设计中,要求实现要求的功能,必须要有主函数,并通过主函数调用各功能子模块,以上展示各个模块的功能,以下将分析主函数和各个模块中的具体算法和实现。 1.起泡排序函数的实现 函数声明:voidgensort(intb[],intn) 起泡排序的基本思想是将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个记录交换,然后比较第二个记录和第三个记录的关键字。依次类推,直至第n-1个记录和第n个记录的关键字进行比较为止。起泡排序是一种稳定的排序方法,
6、在随机产生数的情况下,总的时间复杂度为O(n2)。 2.选择排序函数的实现 函数声明:voidgentsort(intb[],intn) 选择排序法的基本思想是:第i趟排序通过n-i次关键码的比较,在n-1+i(1right,然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 6.快速排序函数的实现 函数声
7、明:voidoutput(sqlistb,intn)//输出元素值 首先选一个轴值,将待排序记录分割成独立的两部分,左侧记录的关键码均小于或等于轴值,右侧记录的关键码均大于或等于轴值,然后分别对这两部分重复上述过程,直到整个序列有序。快速排序是一种不稳定的排序方法,时间复杂度为O 7.堆排序函数的实现 函数声明:voidsift(sqlistr,ints,intm) 首先将待排序的记录序列构造成一个堆,此时,选出了堆中所有记录的最大者即堆顶记录,然