算法实验二 分治法 众数问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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,向右递归

相关文档
最新文档