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

标签 c# algorithm binary-search

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

     if (item > N[mid])

无法运行,因为 item 是一个字符串。我如何在其中找到项目?:

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

并试图用这样的东西来安抚它

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

        int min = 0; //=0
        int N = name.Length;  //.Length
        int max = N - 1;
        int S = searchKeyword.Length;



        do
        {
            int mid = (min + max) / 2;
            if (S > N[mid])
                min = mid + 1;
            else
                max = mid - 1;
            if (name[mid] == S)
                return mid;
            //if (min > max)
            //   break;
        } while (min <= max);
        return -1;
    }

最佳答案

您不能在字符串中使用 > 运算符,因为 C# 不知道说一个字符串比另一个字符串大是什么意思。你按长度,字母顺序比较......?

如果您想按字母顺序对它们进行排序,请使用 String.Compare方法代替:

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

关于c# - 在字符串的二进制搜索中应用索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41200432/

相关文章:

algorithm - Verhoeff 算法的正确排列循环

iphone, 图像处理

algorithm - Raku 中的简洁(一行?)二分搜索

c++ - 将元素插入排序数组并找到其索引的最有效方法

c# - 获取 IEnumerable<T> 计数的最佳方法

c# - 如何在 C# 中获取内存中 Image 类实例的 mime 类型?

c# - AssemblyInfo 版本信息星号

algorithm - 快速二维光照算法?

search - 搜索字符串算法

c# - 如何生成所有可能的单词