//
// Created by 刘彪 on 2020/3/1.
//(类模板)二分法查找下标元素 p180
#include <iostream>
#include <cstdio>
using namespace std;
const int Max = 100;
//#define Max 100
template <class T>
class Sample{
T A[Max];
int n;
public:
Sample(){}
Sample(T a[],int i);
int seek(T c);
void disp(){
for(int i=0;i<n;i++) cout<<A[i]<< " ";
cout<<endl;
}
};
template <class T>
Sample<T>::Sample(T a[], int i){
n = i;
for(int j=0;j<i;j++) A[j] = a[j];
}
template <class T>
int Sample<T>::seek(T c) {
int low = 0,high = n-1,mid;
while(low<=high){
// mid = (low+high)/2;
mid = low +(high-low)/2;
if(A[mid] == c) return mid;
else if(A[mid]<c) low = mid+1;
else high = mid - 1;
}
return -1;
}
int main(){
char a[] = "acegkmpwxz";
Sample<char> s(a,10);
cout<<"元素序列:";s.disp();
cout<<"元素'g'的下标"<<s.seek('g')<<endl;
return 0;
}