第一范文网 - 专业文章范例文档资料分享平台

算法分析与复杂性理论 实验报告 基本排序

来源:用户分享 时间:2025/10/14 10:14:00 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

深 圳 大 学 实 验 报 告

课程名称: 算法设计与分析

实验名称: 多种排序算法的算法实现及性能比较

学院: 计算机与软件学院 专业: 计算机科学与技术

报告人: 张健哲 学号: 2013150372 班级: 3

同组人: 无

指导教师: 李炎然

实验时间: 2015/3/25——2015/4/8

实验报告提交时间: 2015/4/8

教务处制

一.实验目的

1. 掌握选择排序、冒泡排序、合并排序、快速排序、插入排序算法原理

2. 掌握不同排序算法时间效率的经验分析方法,验证理论分析与经验分析的一致性。

二.实验步骤与结果

实验总体思路:

利用switch结构来选择实验所要用的排序算法,每一种排序都用相同的计算运行时间的代码,不同的算法就在算法实现部分进行改动(如下代码1至5所示)。不断的改变数据规模,每一个规模在实验时,用循环进行多次实验并作为样本记录消耗的时间。最后输出在不同排序算法下,不同的数据规模的20次实验样本和平均用时(如下图1至5所示)。

各排序算法的实现及实验结果:

(注1:以下代码全部为伪代码,具体代码实现请参照程序中的代码)

(注2:图中显示的时间单位均为毫秒,图中“排序所花时间”一项为平均消耗时间,平均消耗时间结果以20组样本计算平均值后取整得到(并非四舍五入)。)

1、选择排序 代码1:

for i=0 to n-2

min=i

for j= i+1 to n-1

if ele[min]>ele[j] min=j swap(ele[i],ele[min]) //交换

图1、选择排序在不同数据规模下排序所消耗的时间

2、冒泡排序 代码2: for i= 0 to n-1

for j=0 to n-1-i

if a[j]>a[j+1]

swap(a[j],a[j+1]) //交换

图2、冒泡排序在不同数据规模下排序所消耗的时间

3、合并排序 代码3:

Merge(ele[1...n],left,right) middle=(left+right)/2 if right>1eft+1 Merge(ele,left,middle) Merge(ele,middle+1,right) l←left r←right i←left

while l<=middle&&r<=right //两组分别一一比较,数据小的放入ele if ele[l]<=ele[r] t[i++]←ele[l++] else t[i++]←ele[r++]

while l>middle&&r<=r //只剩一组还有剩余的时,将剩下的按顺序放入 ele[i++]=s[r++]

while l<=middle && r>right ele[i++]=s[l++];

图3、合并排序在不同数据规模下排序所消耗的时间

4、快速排序 代码4:

quick(ele[0...n-1],left,right) if l

l←left r←right x←ele[l]; while l

r--

if l

ele[l]←ele[r] l++

while lele[l] //与上面相反

ll++

if l

quick(ele,left,l-1) // 递归调用 quick(ele,l+1,right)

算法分析与复杂性理论 实验报告 基本排序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3pql83nuko85bn68adgt_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top