1 / 10
文档名称:

算法分析实验报告.doc

格式:doc   大小:53KB   页数:10页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

算法分析实验报告.doc

上传人:sssmppp 2021/1/2 文件大小:53 KB

下载得到文件列表

算法分析实验报告.doc

文档介绍

文档介绍:算法分析实验报告
实验时间:
姓名:杜茂鹏
班级:计科1101
学号:0909101605
•实验内容
1•归并排序
2•快速排序
3 •分治法找最大最小值
二・实验目的
1・巩固分治法的思路:分治法的思想是,将一个难以直 接解决的大问题,分割成一些规模较小的相同的问题,以便 各个击破,分而治之。如果原问题可以分割成k个子问题, Kk<=n,且这些子问题都可解,并可利用这些子问题求解出 原问题的解,那么这种分治法就是可行的。分治法往往是原 问题的较小规模,这为使用递归技术提供了方便。在这种情 况下,反复应用分之手段,可以使子问题与原问题类型一致 而其规模却不断缩小,最终使子问题缩小到很容易求出其 解。由此自然导致的递归算法。分治与递归像一对李生兄弟, 经常同时应用在算法设计之中,并由此产生许多高效算法。
2•了解快速排序、归并排序、找最大最小值的内涵,区
别普通排序方式和利用分治法的排序方式的差别。

1 •快速排序:选择一个值作为key,经过比较将小于key 的交换到它前面,将大于key的交换到它后面;接下来对key 前面的和后面的分别进行排序,qsort(S,low,high),利用分治法 将其分解成最小的问题个体,通过比较将其排好序,即为顺 序的数组。
2•归并排序:mplow+high)/?,利用 mergesort(S」ow,m,L)、 mergesort(S,m+1 ?high,L)分治成最小的个体,之后进行排序, 将排好的序列放到L中,递归地逐渐复原原问题,当所有的 都排好序便可。
3•找最大最小值:利用分治法分成两部分,在这两部分 中找到最大、最小值,进而进行比较,从而得到。在程序运 行过程中,实际上试讲问题分成最小的部分,分别找出最大 最小,通过比较找出上层的最大最小值,进而找出全部的最 大最小值。
运行结果

1•归并排序
•C:\Users\DMP\Desktop\归并序・ex 贰
产生的随机数为:
41 67 34 00
排序后的顺序为:
00 24 34 41匸匕较的次数为:43
归并排序
69 24 78 58 62 64
58 62 64 67 69 78
情按任意键继续・・•
2•快速扌非序
快速排序 产生的随机数为:
41 67 34 0 69 24 78 58 62 64
排序后的顺序为:
0 24 34 41 58 62 64 67 69 78
比较的次数为:36
请按任意键继续・・・
czj l°J 乙S
3•分治法找最大最小值
•C:\Users\DMP\Desktop\”
找取大值取小值:
产生的随机数为:
81 29 37 74 30 57 89 35 38 97
Max : 97
Min : 29
倍按任意键继续・・・
程序源代码
//分治法归并排序
#include <>
#include <>
int n=();
void merge(int number[],int first,int last,int mid) {
int number_temp[10] = {0};
int i=fir