Нужно написать эффективную программу бинарного поиска поиска правой границы в упорядоченном массиве. Программа должна удовлетворять условиям: Функция должна быть НЕ рекурсивной и работать за O(log(items.Length)*L), где L — ограничение сверху на длину фразы. Я сделал алгоритм, который не справляется с быстрым решением.
using System;
using System.Collections.Generic;
using System.Linq;
namespace Autocomplete
{
public class RightBorderTask
{
public static int GetRightBorderIndex(IReadOnlyList<string> phrases, string prefix,
int left, int right)
{
for (var i = 0; i < phrases.Count - 1; i++)
{
var m = (right + left) / 2;
if (string.Compare(prefix, phrases[m], StringComparison.OrdinalIgnoreCase) == 0)
return m + 1;
if (string.Compare(prefix, phrases[m], StringComparison.OrdinalIgnoreCase) >= 0)
{
left = m;
i = left;
}
else right = m;
}
if (phrases[right - 1] == prefix)
return right;
return phrases.Count - 1;
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как реализовать метод, который отслеживает активность окна WPF C#? Задача стоит следующая, необходимо предусмотреть возможность программы...
Есть класс наследующий от родительского, в родительском есть массив, который имеет get; set; Однако в дочернем классе он заполняется, а в родительском...
Возникает проблема, что после авторизации через 5 минут пропадает авторизация, в startup: