该程序应该将其纳入其中。我创建了大部分代码,但这是我实验室的第二部分,我必须返回并为二进制搜索输入字符串。如果我必须删除idNum以及结果和empId,我就不知道如何搜索字符串。
const int NUM_NAMES = 20;
string names[NUM_NAMES] = {"Collins, Bill", "Smith, Bart", "Allen, Jim",
"Griffin, Jim", "Stamey, Marty", "Rose, Geri",
"Taylor, Terri", "Johnson, Jill", "Allison, Jeff",
"Looney, Joe", "Wolfe, Bill", "James, Jean",
"Weaver, Jim", "Pore, Bob", "Rutherford, Greg",
"Javens, Renee", "Harrison, Rose", "Setzer, Cathy",
"Pike, Gordon", "Holland, Beth" };
因此,二进制搜索将使用字符串而不是int。我不明白该怎么做。
// Function prototype
int binarySearch(const int [], int, int);
const int SIZE = 20;
int main()
{
// Array with employee IDs sorted in ascending order.
int idNums[SIZE] = {101, 142, 147, 189, 199, 207, 222,
234, 289, 296, 310, 319, 388, 394,
417, 429, 447, 521, 536, 600};
int results; // To hold the search results
int empID; // To hold an employee ID
// Get an employee ID to search for.
cout << "Enter the employee ID you wish to search for: ";
cin >> empID;
// Search for the ID.
results = binarySearch(idNums, SIZE, empID);
// If results contains -1 the ID was not found.
if (results == -1)
cout << "That number does not exist in the array.\n";
else
{
// Otherwise results contains the subscript of
// the specified employee ID in the array.
cout << "That ID is found at element " << results;
cout << " in the array.\n";
}
return 0;
}
binarySearch函数对整数数组执行二进制搜索。搜索具有最大大小元素的数组,以查找存储在value中的数字。如果找到该数字,则返回其数组下标。否则,返回-1表示该值不在数组中。
int binarySearch(const int array[], int size, int value)
{
int first = 0, // First array element
last = size - 1, // Last array element
middle, // Mid point of search
position = -1; // Position of search value
bool found = false; // Flag
while (!found && first <= last)
{
middle = (first + last) / 2; // Calculate mid point
if (array[middle] == value) // If value is found at mid
{
found = true;
position = middle;
}
else if (array[middle] > value) // If value is in lower half
last = middle - 1;
else
first = middle + 1; // If value is in upper half
}
return position;
}
答案 0 :(得分:1)
更改
int binarySearch(const int array[], int size, int value)
到
int binarySearch(const std::string array[], int size, const std::string &value)
然后按如下方式使用
std::string name;
std::getline(std::cin, name); // read name from console
std::sort(names, names + NUM_NAMES); // make sure the array is sorted
results = binarySearch(names, NUM_NAMES, name);
您还可以使用模板,以便您的代码更通用
template<typename T>
int binarySearch(const T array[], int size, const T &value)