[英]C# array indexing
如果这是一个明显的问题,请提前道歉。
我刚刚从java切换到C#,我正在C#中练习,以便熟悉它。 它只是一个二进制搜索程序。
key > array[mid]
存在错误key > array[mid]
无法将带有[]的索引应用于system.array类型的表达式。 key > array.GetValue(mid)
,但更改后错误变为“运算符<不能应用于int和object类型的操作数”。 我真的不知道该怎么做,我没有人讨论它,所以任何有关从Java切换到C#的帮助或任何建议都会很棒。 谢谢。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BinarySearch.BinarySearch
{
class BinarySearch
{
public int BinarySearch(int key, Array array)
{
int lowerbound = 0, upperbound = array.Length, mid = 0, count = 0, midValue = 0;
while (lowerbound <= upperbound)
{
mid = (lowerbound + upperbound)>>1;
if (key < array[mid])
{
upperbound = mid - 1;
count++;
}
else if (key > array[mid])
{
lowerbound = mid + 1;
count++;
}
else
{
count++;
return mid;
}
}
return -1; //the key does not exist in this array.
}
}
}
如果您确实希望在代码中使用类型Array
,则可以使用GetValue()
方法,但需要将返回的object
实例强制转换为int
以进行比较。 例如:
if (key < (int)array.GetValue(mid))
但那可能不是你真正想要的。 您应该以与在Java中使用它相同的方式使用该数组。 例如:
public int BinarySearch(int key, int[] array)
那么你可以像在Java中一样编写表达式:
if (key < array[mid])
最后,还有其他一些事情:
Array
。 我将上面示例中的返回类型更改为int
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.