您的位置:首页 > 其它

二分(折半)查找算法实现

2015-07-05 17:04 405 查看
不多说了,见代码:

// BinaryFindNumINArray.cpp : 定义控制台应用程序的入口点。
/*
@mishidemudong
@2015-7-5-17:02
*/
//

#include "stdafx.h"
#include<iostream>
using namespace std;
bool Find=false;
int BinaryFind(int *a,int length, int target)
{

if (a == NULL || length < 0)
return -1;
int low = 0, high = length - 1;
int mid = 0;
while (low <= high)
{

if (a[mid] == target)
{
Find = true;
return mid;
break;
}
mid = (low + high) / 2;
if (a[mid] < target)
low = mid;
else
high = mid;
}

}
//递归版本
<pre name="code" class="cpp">int BinerarySearch(int a[], int low, int high, int key)
{
int mid = 0;
if (low > high)
return -1;
else
{
mid = (low + high) / 2;
if (a[mid] == key)
return mid;
if (key > a[mid] )
return BinerarySearch(a, mid + 1, high, key);
else
return BinerarySearch(a, low, mid - 1, key);
}
}



int _tmain(int argc, _TCHAR* argv[])
{
int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 19, 30, 58 };
int length = sizeof(a)/sizeof(int);
int location = 0;
int x = 0;
for (int i = 0; i < length; ++i)
cout << a[i]<< " ";
cout << endl;
cout << "whitch number do you want to seach?";
scanf_s("%d", &x);
location = BinaryFind(a, length,x);
switch (Find)
{
case true:printf("Yes,The number you input is founded!And it is %dth number in the array.", location + 1); break;
case false:printf("Sorry,The number you input is not in this Array.");
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: