设计3题目:各种排序算法及性能分析

文章详细介绍了设计和实现多种排序算法的过程,包括直接插入排序、折半插入排序、希尔排序、冒泡排序、改进冒泡排序、快速排序、简单选择排序、堆排序和二路归并排序。实验结果显示堆排序和二路归并排序性能最优,强调了时间复杂度、空间复杂度以及算法可读性和维护性的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、设计3目的

掌握各种内排序算法设计及其执行绝对时间,并对其时间性能进行比较。

2、设计3正文

2.1 实验内容

内容:编写一个程序,随机产生n个1-99的正整数序列,分别采用直接插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序和二路归并排序算法对其递增排序,求出每种排序方法所需要的绝对时间。

要求:为了便于体现各类排序算法的执行时间差别,要求产生不少于50000个随机数进行测试,同时需要编写测试函数用于测试排序结果是否为递增的。

2.2 实验分析

2-1各种排序算法及性能分析功能图

本次的程序是一个对各种算法进行统计的集合,需要编写各种排序算法,在程序中需要有生成随机数的initial()函数、进行位置交换的函数swap()以及验证其正确性的test()函数、对数据及堆排序数据复制的copy()以及copy1()函数。而最为关键的则是实验中涉及算法的函数,包括了InsertSort()、BinInsertSort()、 ShellSort()、BubbleSort()、GBubbleSort()、partition()、QuickSort()、SelectSort()、sift()、HeapSort()、Merge()、MergePass()和MergeSort()函数的编写,在每种排序后有对应的计算时间所用函数,该程序的效果如图2-1各种排序算法及性能分析功能图所示。

在这些排序算法中性能最好的两种为堆排序和二路归并排序,其中堆排序是通过将无序表转化为堆,可以直接找到表中最大值或者最小值,然后将其提取出来,令剩余的记录再重建一个堆,取出次大值或者次小值,如此反复执行就可以得到一个有序序列。二路归并排序是分为两个基本的操作,一个是分,也就是把原数组划分成两个子数组的过程。另一个是治,它将两个有序数组合并成一个更大的有序数组。在归并的过程中将子表两两合并,每合并一次,就会产生一个新的且更长的有序表,重复这一步骤,直到最后只剩下一个子表,这个子表就是排好序的线性表。

堆排序通过循环对堆的元素进行排列来构造大根堆或是小根堆,该过程如图2-3所示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还没有名字哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值