[作业]折半查找
#include "stdio.h"
#define MAX_ARR 100
#define LEN 10
typedef struct
{
int r[MAX_ARR];
int length;
}Table;
void CreatTable_Sq(Table &t)
{
int a = 2;
t.length = 0;
int i;
for(i=0;i<LEN;i++)
{
t.r[t.length] = a;
t.length++;
a += 2;
}
}
int search_bin(Table t, int key)
{
int low, high, mid;
low = 1; high = t.length;
while (low <= high)
{
mid = (low + high) / 2;
if (key == t.r[mid])
return mid;
else if (key<t.r[mid])
high = mid - 1;
else
low = mid + 1;
}
return 0;
}
int main()
{
Table t;
int key, c;
CreatTable_Sq(t);
printf("数组为:\n");
for (int i = 0; i < LEN; i++)
printf("%d\t",t.r[i]);
printf("\n请输入要查找的数字\n");
scanf("%d", &key);
c = search_bin(t, key);
printf("\n数字 %d 在 %d 位置\n\n", key, c + 1);
return 0;
}