logo资料库

分治算法实验报告.doc

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
本科学生综合性实验报告 姓名___ 刘春云 学号_ 0103918__ _ 专 业_ _软件工程__ 班级_ 103_ _ 实验项目名称_二分搜索问题的分治算法实验 指导教师及职称_____赵晓平___ _ _ 开课学期 2011 至_ 2012 学年_ 3 _学期 上课时间 2012 年 2 月 18 日
学生实验报告(1) 学生姓名 刘春云 学号 0103918 实验项目 二分搜索问题的分治算法实验 同组人:无 ■必修 □选修 □演示性实验 □验证性实验 ■操作性实验 □综合性实验 实验地点 W202 实验仪器台号 指导教师 赵晓平 实验日期及节次 2012-2-18 一、问题描述 二分查找又称折半查找,即在一串已排好序的需要处理的数据中多次用折半的方法查找出 要搜索出的数据。 二、解题思路 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字 比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子 表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进 一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直 到子表不存在为止,此时查找不成功。 三、算法描述 用一个数组来存储数据,具体的结构体为: typedef struct list { double elem[100]; int length; }list;其中 length 是数据的总个数 比较表中间位置记录的关键字与查找关键字的大小,逐步缩小查找范围 实现代码为: while(low
mid=(low+high)/2; if(l.elem[mid]==key) { } outfile<<"你所要搜索的数据在第"< #include using namespace std; typedef struct list { double elem[100]; int }list; length;
int init_list(list&l)//初始化函数 { int search(int low,int high,list&l); int n=0; ifstream infile; cout<<"请输入数据(必须是从小到大排序的)"<>l.elem[n])//从文件中输入已排序数组,直到文件中无数据读取 n++; infile.close(); l.length=n; for(int i=0;il.elem[i+1]) { outfile<<"朋友请不要玩我!"<
double key; cout<<"请输入查找数据"<>key; while(low
五、程序测试及分析 1、数据输入:由文件 input.txt 给出输入数据。例如: 2、结果输出:将计算的××××××结果输出到文件 output.txt 中。例如:
六、总结 用分治法解问题要注意以下的三点: (1) 该问题的规模缩小到一定的程度就可以容易地解决 (2) 该问题可以分解为若干个规模较小且相互独立的相同问题,即该问题 具有最优子结构性质。 (3) 利用该问题分解出的子问题的解可以合并为该问题的解; 七、导教师评语及成绩: 评语: 成绩: 指导教师签名: 批阅日期:
分享到:
收藏