64,637
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <string>
using namespace std;
template<typename T>
int indexOfKey(T list[], int low, int high, T key);
template<typename T>
int indexOfKey(T list[], T key, int size);
int main()
{
int list1[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int index1 = indexOfKey(list1, 2, 10);
cout << "The index of the key is " << index1 << endl;
double list2[10] = {1.2, 2.5, 3.1, 4, 5, 6, 7, 8.1, 9.5};
int index2 = indexOfKey(list2, 8.1, 10);
cout << "The index of the key is " << index2 << endl;
string list3[4] = {"BeiJing", "ShangHai", "HuNan", "ChenZhou"};
int index3 = indexOfKey(list3, string("BeiJing"), 4);
cout << "The index of the key is " << index3 << endl;
return 0;
}
template<typename T>
int indexOfKey(T list[], int low, int high, T key)
{
if (low > high)
return -1 - low;
else
{
int mid = (low + high) / 2;
if (key > list[mid])
return indexOfKey(list, mid, high, key);
else if(key==list[mid]){
return mid;
}
return indexOfKey(list, low, mid, key);
}
}
template<typename T>
int indexOfKey(T list[], T key, int size)
{
int low = 0;
int high = size - 1;
return indexOfKey(list, low, high, key);
}
int indexOfKey(T list[], int low, int high, T key)
{
int low = 0;
int high = size - 1;
return indexOfKey(list, low, mid + 1, key);
return indexOfKey(list, low, mid + 1, key);
//mid从何而来?