在字符串的二进制搜索中应用索引
Apply indexing in binary search for string
我收到无法应用索引的错误,但我不确定如何为 BinarySearch 建立 'bounds'(代数)来查找字符串。很明显
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;
}
并试图用这样的东西来安抚它
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;
}
我收到无法应用索引的错误,但我不确定如何为 BinarySearch 建立 'bounds'(代数)来查找字符串。很明显
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;
}
并试图用这样的东西来安抚它
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;
}