针对数值类型关键字
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <cctype>
using namespace std;
#define EQ(a,b) (!strcmp((a),(b)))
#define LT(a,b) (strcmp((a),(b)) < 0)
#define LQ(a,b) (strcmp((a),(b)) <= 0)
int Search_Bin(int *seq, int key)
{
int low = 1, high = 10;
while(low <= high)
{
int mid = (low + high) / 2;
if(seq[mid] == key)
{
cout << "Find the key" <<" and the position is " << mid+1 <<endl;
return mid;
}
else if(seq[mid] < key)
low = mid + 1;
else
high = mid - 1;
}
cout << "No find !" << endl;
return 0;
}
int main()
{
int seq_list[] = {1,2,3,4,5,6,7,8,9};
Search_Bin(seq_list,4);
return 0;
}
针对字符串类型关键字
int Search_Bin(char *seq, char key, int length)
{
int low = 1, high = length;
while(low <= high)
{
int mid = (low + high) / 2;
if(seq[mid] == key)
{
cout << "Find the key" <<" and the position is " << mid+1 <<endl;
return mid;
}
else if(seq[mid] < key)
low = mid + 1;
else
high = mid - 1;
}
cout << "No find !" << endl;
return 0;
}
int main()
{
char seq_list[] = "acdgjloqh";
int seq_length = strlen(seq_list);
char find_c ;
cout << "Please input a character : " ;
cin >> find_c;
cout << endl;
Search_Bin(seq_list,find_c,seq_length);
return 0;
}