C# 在字符串的二进制搜索中应用索引

C# 在字符串的二进制搜索中应用索引,c#,algorithm,binary-search,C#,Algorithm,Binary Search,我得到的错误是无法应用索引,但我不确定如何为BinarySearch建立“边界”(代数)以查找字符串。很明显 if (item > N[mid]) 无法运行,因为项是字符串。我如何找到此中的项目?: public static int BinarySearch(string[] name, string item) { int min = 0; int N = name.Length; int max = N -

我得到的错误是无法应用索引,但我不确定如何为BinarySearch建立“边界”(代数)以查找字符串。很明显

     if (item > N[mid])
无法运行,因为项是字符串。我如何找到此中的项目?:

    public static int BinarySearch(string[] name, string item)
    {

        int min = 0;
        int N = name.Length;
        int max = N - 1;
        do
        {
            int mid = (min + max) / 2;
            if (item > N[mid])
                min = mid + 1;
            else
                max = mid - 1;
            if (name[mid] == item)
                return mid;
            //if (min > max)
            //   break;
        } while (min <= max);
        return -1;
    }
publicstaticintbinarysearch(字符串[]名称,字符串项)
{
int min=0;
int N=name.Length;
int max=N-1;
做
{
int mid=(最小+最大)/2;
如果(项目>N[mid])
最小值=中间值+1;
其他的
max=mid-1;
if(名称[mid]==项目)
中途返回;
//如果(最小值>最大值)
//中断;
}while(最小N[中间])
最小值=中间值+1;
其他的
max=mid-1;
如果(名称[mid]==S)
中途返回;
//如果(最小值>最大值)
//中断;

}while(min您不能在字符串中使用
运算符,因为C#不知道您所说的字符串比另一个字符串大是什么意思。您是否按长度、字母顺序进行比较

如果要按字母顺序排序,请使用以下方法:

public static int BinarySearch(string[] name, string item)
{

    int min = 0;
    int N = name.Length;
    int max = N - 1;
    do
    {
        int mid = (min + max) / 2;
        if (String.Compare(item, name[mid]) > 0)
            min = mid + 1;
        else
            max = mid - 1;
        if (String.Compare(item, name[mid]) == 0)
            return mid;            //if (min > max)
        //   break;
    } while (min <= max);
    return -1;
}
publicstaticintbinarysearch(字符串[]名称,字符串项)
{
int min=0;
int N=name.Length;
int max=N-1;
做
{
int mid=(最小+最大)/2;
if(String.Compare(项,名称[mid])>0)
最小值=中间值+1;
其他的
max=mid-1;
if(String.Compare(项,名称[mid])==0)
返回中间值;//如果(最小值>最大值)
//中断;

}while(min您不能在字符串中使用
运算符,因为C#不知道您所说的字符串比另一个字符串大是什么意思。您是否按长度、字母顺序进行比较

如果要按字母顺序排序,请使用以下方法:

public static int BinarySearch(string[] name, string item)
{

    int min = 0;
    int N = name.Length;
    int max = N - 1;
    do
    {
        int mid = (min + max) / 2;
        if (String.Compare(item, name[mid]) > 0)
            min = mid + 1;
        else
            max = mid - 1;
        if (String.Compare(item, name[mid]) == 0)
            return mid;            //if (min > max)
        //   break;
    } while (min <= max);
    return -1;
}
publicstaticintbinarysearch(字符串[]名称,字符串项)
{
int min=0;
int N=name.Length;
int max=N-1;
做
{
int mid=(最小+最大)/2;
if(String.Compare(项,名称[mid])>0)
最小值=中间值+1;
其他的
max=mid-1;
if(String.Compare(项,名称[mid])==0)
返回中间值;//如果(最小值>最大值)
//中断;

}while(min)我一直收到错误“名称[mid]在当前上下文中不存在。”现在检查答案meGlorius的答案很简单!它运行良好:@似乎,如果这回答了您的问题,请单击此处的绿色勾号,将答案标记为已接受。如果答案对您有帮助,则不应保留问题。我不断收到错误“名称[mid]在当前上下文中不存在”。好了:)现在检查答案meGlorius的答案很简单!它运行良好:@似乎,如果这回答了您的问题,请单击此处的绿色勾号,将答案标记为已接受。如果答案对您有帮助,则不应保留问题。有没有理由不使用现有的
BinarySearch
方法进行练习、理解和构建在进入界面之前提高灵活性。我一直在学习算法背后的不同方法,我想从长远来看这会提高我的技能[希望:)]有没有理由不使用现有的
BinarySearch
方法?在进入界面之前,为了练习、理解和建立灵活性。我一直在学习算法背后的不同方法,我想从长远来看,这会提高我的技能[希望:)]