算法实验二 分治法 众数问题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法分析与设计实验二
分治法
主要内容
•实验目的
•主要实验仪器设备和环境•实验内容
•实验要求
•注意点
实验目的
•理解分治法的基本思想
•针对特定问题,可以设计出分治算法进行求解
主要实验仪器设备和环境
•每位学生一台计算机
•计算机的操作系统为
–windows 2000或Windows XP
•工具软件
–C++ IDE,JAVA IDE
实验内容一众数问题
•在一个包含n个元素的多重集合S中,每个元素在S中出现的次数称为该元素的重数,多重集合S中重数最大的元素称为众数。举例来说,多重集合S={1,2,3,3,3,4,4,5},则多重集合S的众数是3,元素3的重数为3。
•现要求对随机生成的由n个自然数组成的多重集合S,应用分治法编程计算S的众数及其重数。
实验要求
•编程语言可以用C,C++或者JAVA,关键步骤必须有注释
•实验报告必须包含以下内容:算法设计的基本思路、程序清单以及针对测试数据的运行结果•实验报告电子版请发至seualgo@,Email标题:“学号姓名算法实验二众数问题”,附件请不要压缩,实验报告名:“学号姓名算法实验二众数问题”
注意点
•随机数的生成问题
•求解众数问题时的分治策略
编码提示
•随机数生成
–srand(time(0));//设置随机数种子
•要#include
–rand();//生成[0,MAX)之间的随机整数•要#include
–for(int i=0;i<10;i++)
{
ran_num=rand() % 10;
cout< }//生成不大于10的随机整数 编码提示 •一种思路 –先根据某数X,将小于X的放于其左,大于X的放于其右 –统计X出现的次数T –如果X左边数的个数>T,向左递归 –如果X右边数的个数>T,向右递归