首页 > 解决方案 > 二进制搜索如何与字符串数组一起工作?

问题描述

我有一个字符串数组,我正在执行线性和二进制搜索。我了解线性搜索的工作原理,但对于二进制我不了解这部分:

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;
}

标签: c++arraysbinary-search

解决方案


推荐阅读