c++ - 二进制搜索如何与字符串数组一起工作?
问题描述
我有一个字符串数组,我正在执行线性和二进制搜索。我了解线性搜索的工作原理,但对于二进制我不了解这部分:
else if (array[mid]<value){
low=mid+1;
}
else{
high=mid-1;
}
这里发生的 2 个字符串之间的比较是什么以及如何:array[mid]<value
?
这是我的完整代码:
#include <iostream>
#include <string.h>
using namespace std;
int linearSearch(string array[],string value);
int binarySearch(string array[],string value);
int main(int argc, const char * argv[]) {
string array[] = {"apple","banana","ciku","durian","rambutan"};
string value="banana";
//using linear search
int location = linearSearch(array, value);
cout<<"Location of durian is in:"<<location<<endl;
//using binary search
int position = binarySearch(array, value);
cout<<"Location of durian is in:"<<position<<endl;
}
int binarySearch(string array[],string value){
int low=0;
int high=5;
while(low<=low){
int mid=(low+high)/2;
if(array[mid]==value){
return mid;
}
else if (array[mid]<value){
low=mid+1;
}
else{
high=mid-1;
}
}
return -1;
}
int linearSearch(string array[],string value){
int arrayLength = 5;
for(int i=0;i<arrayLength;i++){
if(array[i]==value){
return i;
}
}
return -1;
}
解决方案
推荐阅读
- asp.net - 函数比较 2 个 csv 文件的 2 列和电子邮件差异
- python - 从 for 循环的输出创建数据帧
- javascript - 在特定循环中从一组 html 项中创建一个分割的 html
- python - 针对 ubyte 数据的 python Pandas 优化(0..255)
- python - Odoo - 我如何向关注者发送自定义消息
- java - 使用 Mockito,如何匹配列表中地图的键值对?
- c++ - 如何迭代具有相同基类的元素元组
- python - 将while循环更改为for循环以查找两个生日相同的人
- angular - 错误:尝试区分“”时出错。只允许使用数组和可迭代对象
- rest - HTTP 响应编码问题