• 7、递归的二分查找


      1 #include<iostream>
      2 
      3 using namespace std;
      4 //迭代二分查找
      5 int BinarySearch_I(int *a,const int x,const int n);
      6 //递归二分查找
      7 int BinarySearch_R(int *a,const int x,const int left,const int right);
      8 int main()
      9 {
     10 	int m[]={1,2,3,4,5,6,7,8,9,10};
     11 	int result;
     12 	int num=7;//要查找的数
     13 	if((result=BinarySearch_I(m,num,9))<0)
     14 	{ cout<<"迭代算法:没找到!"<<endl;}
     15 	else {
     16 		cout<<"迭代算法:在m["<<result<<"]处找到"<<num<<endl;
     17 	}
     18 
     19 
     20 	if((result=BinarySearch_R(m,num,0,9))<0)
     21 	{ cout<<"递归算法:没找到!"<<endl;}
     22 	else {
     23 		cout<<"递归算法:在m["<<result<<"]处找到"<<num<<endl;
     24 	}
     25 	system("pause");
     26 	return 0;
     27 }
     28 int BinarySearch_I(int *a,const int x,const int n)
     29 {
     30 	int left=0,right=n-1;
     31 	while(left<=right)
     32 	{
     33 		int middle = (left+right)/2;
     34 		if(x<a[middle]) right = middle-1;
     35 		else if(x>a[middle]) left=middle+1;
     36 		else return middle;
     37 	}
     38 	return -1;
     39 }
     40 int BinarySearch_R(int *a,const int x,const int left,const int right)
     41 {
     42 	if(left<=right)
     43 	{
     44 		int middle=(left+right)/2;
     45 		if(x<a[middle]) return BinarySearch_R(a,x,left,middle-1);
     46 		else if(x>a[middle]) return BinarySearch_R(a,x,middle+1,right);
     47 		else return middle;
     48 	}
     49 	return -1;
     50 }
     51 
     52 

    VS2010运行结果:

    image

  • 相关阅读:
    mysql的sql执行计划
    JMX
    用 Cobertura 测量测试覆盖率
    javap反汇编的使用
    Java ASM 技术简介
    基于Java Instrument的Agent实现
    浮动的同级盒子顶对齐
    子绝父相布局
    相对定位,绝对定位和固定定位
    嵌套的定位盒子如何居中?
  • 原文地址:https://www.cnblogs.com/luanxin/p/8875651.html
Copyright © 2020-2023  润新知