Я получаю ошибку неспособности применить индексацию, но я не уверен, как установить «границы» (алгебраически) для BinarySearch, чтобы найти строку. Очевидно, чтоПрименить индексирование в двоичном поиске для строки
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;
}
Любая причина не использовать существующий 'метод BinarySearch'? –
для практики, понимания и умения строить перед перемещением в интерфейс. Я изучаю разные методологии, лежащие в основе алгоритмов, и я думаю, что это заостряет мои навыки в долгосрочной перспективе [надеюсь, :)] – seems