C# 在字符串的二进制搜索中应用索引
我得到的错误是无法应用索引,但我不确定如何为BinarySearch建立“边界”(代数)以查找字符串。很明显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 -
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
方法?在进入界面之前,为了练习、理解和建立灵活性。我一直在学习算法背后的不同方法,我想从长远来看,这会提高我的技能[希望:)]