#include<iostream>
using namespace std;
SqList L;
int number=0;
Status InitList_Sq(SqList &L){ //构造一个空的顺序表L
L.elem = new ElemType[MAXSIZE]; //为顺序表分配空间
if (!L.elem) exit(OVERFLOW); //存储分配失败
L.length = 0; //空表长度为0
return OK;
}
Status add(SqList &L, int i)
{
int j, a;
cout << "请输入有顺序的数值:" << endl;
for (j = 1; j < i; j++)
{
++L.length;
cin >> a;
L.elem[j].key = a;
}
return OK;
}
int Search_Bin(SqList ST, keytype key){
//若找到,则函数值为该元素在表中的位置,否则为0
int low, high,mid;
low = 1; high = ST.length;
while (low <= high){
mid = (low + high) / 2;
number++;
if (key == ST.elem[mid].key) return mid;//??
else if (key<ST.elem[mid].key) high = mid - 1;//前一子表查找
else low = mid + 1; //后一子表查找
}
return 0; //表中不存在待查元素
}
Status List(SqList &L)
{
int i, a;
for (i = 1; i < L.length+1; i++) //空出数组的首位
{
a = L.elem[i].key;
cout << a << "\t";
}
return 0;
}
int main()
{
int ch, i, a, b, x;
do
{
cout << endl;
cout << "1.初始化-InitList" << endl;
cout << "2.添加数据-Add" << endl;
cout << "3.查找" << endl;
cout << "4.显示- List" << endl;
cout << "5.比较次数" << endl;
printf("请输入你的选择:");
cin >> ch;
switch (ch)
{
case 1:InitList_Sq(L); break;
case 2:add(L,8); break;
case 3:cout << "输入你想找的数:"<<endl ;
cin >> b;
a=Search_Bin(L,b);
cout<<"你要找的数在第"<<a<<"位"<<endl; break;
case 4:List(L); break;
case 5:cout <<"查找"<<b<< "的比较次数为:" << number << endl;
default:
break;
}
} while (1);
}