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

来源:互联网 发布:中国生物医学数据库 编辑:程序博客网 时间:2024/04/29 20:25

不多说了,见代码:

// 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;elsehigh = 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);elsereturn 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;}


0 0