二分查找法的递归实现

实现思想:

给定一组已经排序的数组 从数组中间的元素开始和要查找的元素进行比较

如果中间元素大于要查找的元素的话 把查找范围缩小为中间元素的左半部分(目标元素属于这个范围)

如果中间元素小于要查找的元素的话 把查找范围缩小为中间元素的右半部分(目标元素属于这个范围)


递归的实现:

#include<iostream>
#include<stdlib.h>
using namespace std;
int TestArray[1000];

int findElement(int array[], int S, int N, int X) {  //N表示数组大小
	
	if (S > N)    //如果S == N的话 该下标的元素要么就是结果 要么要查找的元素不存在
	{
		cout << "没有找到元素!!" << endl;
		return -1;
	}

	int mid = (S + N) / 2;

	if (array[mid] == X)
		return array[mid];   //得到结果 进行返回

	else if (array[mid] > X)
		findElement(array, 0, mid, X);   //从左半部分开始查找

	else if (array[mid] < X)
		findElement(array, mid+1, N, X);   //从右半部分开始查找
	
}


void main() {

	
	for (int i = 0; i < 1000; ++i) {
		TestArray[i] = i;
	}
	int size = sizeof(TestArray) / sizeof(int);
	
	int calResult = findElement(TestArray, 0, size-1, 999);
	cout << calResult << endl;


	system("PAUSE");
	return;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值