【发布时间】:2015-06-15 11:06:49
【问题描述】:
我有一个对象数组,我想使用二进制搜索来搜索日期/日期属性(用户决定)。
**编辑:我从文本文件中读取 SharesArray[mid].Date 值(和日期值),示例为:05/02/2015、14/10/2014。searchString 值将从用户,但格式与日期值相同。 **
这是我的第一次尝试,所以我只是尝试日期属性:
int high, low, mid;
high = SharesArray.Length - 1;
low = 0;
while (low <= high)
{
mid = (low + high) / 2;
if (String.Compare(SharesArray[mid].Date, searchString, true) == 0)
{
break;
}
else if (String.Compare(SharesArray[mid].Date, searchString, true) > 0)
{
high = mid - 1;
}
else if (String.Compare(SharesArray[mid].Date, searchString, true) < 0)
{
low = mid + 1;
}
我还尝试了最后一个 else if 语句,就像 else 一样,这没有任何区别。
另外,string1 和 string2 在 String.Compare 部分中的方式有关系吗?
【问题讨论】:
-
String.Compare 中的字符串顺序无关紧要。
-
您能否告诉我们
Date在SharesArray中是如何定义的,并举例说明searchString可能是什么值以及SharesArray[mid].Date可能是什么值? -
我也是这么想的,但是当我使用断点并观察控制流时,当我交换它们时,它会转到数组中的不同元素。
-
我为你编辑了约翰
-
@Steve
Compare调用中的顺序绝对是不是不相关的,mid的计算是正确的,尽管它可能容易溢出,所以@ 987654328@会更好
标签: c# binary-search