二分搜索算法实验报告.pdfVIP

  • 41
  • 0
  • 约9.54千字
  • 约 10页
  • 2019-11-11 发布于湖北
  • 举报
。 实验一 二分搜索算法实验报告 一. 实验目的 1、 理解分治算法的概念和基本要素; 2、 理解递归的概念; 3、 掌握设计有效算法的分治策略; 4、通 过二分搜索技术学习分治策略设计技巧; 二.实验内容及要求 1. 使用二分搜索算法查找任意 N 个有序数列中的指定元素。 2. 通过上机实验进行算法实现。 3. 保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。 4. 至少使用两种方法进行编程。 三.实验原理 二分搜索算法也称为折半查找法,它充分利用了元素间的次序关系,采用分治策略,可 在最坏的情况下用 O(log n) 完成搜索任务。 【基本思想】将 n 个元素分成个数大致相同的两半,取 a[n/2] 与欲查找的 x 作比较,如 果 x=a[n/2] 则找到 x ,算法终止。如果 xa[n/2] ,则我们只要在数组 a 的左半部继续搜索 x (这里假设数组元素呈升序排列)。如果 xa[n/2] ,则我们只要在数组 a 的右半部继续搜索 x 。 二分搜索法的应用极其广泛, 而且它的思想易于理解。 第一个二分搜索算法早在 1946 年 就出现了,但是第一个完全正确的二分搜索算法直到 1962 年才出现。 Bentley 在他的著作 《Writing Correct Programs 》中写道, 90%的计算机专家不能在 2 小时内写出完全正确的二 。 1 。 分搜索算法。问题的关键在于准确地制定各次查找范围的边界以及终止条件的确定,正确地 归纳奇偶数的各种情况,其实整理后可以发现它的具体算法是很直观的。 方法一:直接查找 穷举法遍历 方法二:递归查找 #includestdio.h #define MAX 30 int BinarySearch(int a[],int x,int left,int right) { if(leftright){ return -1; } else{ left=(left+right)/2; if(x==a[left]) return left; else { if(xa[left]) BinarySearch(a,x,left+1,right); else BinarySearch(a,x,left*2-right,left+1); } } } main() { int a[MAX]; int found,x,n,i,j,p; printf( 输的个数 \n); scanf(%d,n); printf( 数组数据 \n); for(i=0;in;i++) { scanf(%d,a[i]); } for (i=0;in-1;i++) {

文档评论(0)

1亿VIP精品文档

相关文档