Как сделать бинарный поиск еще быстрее? - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть проблема, связанная с бинарным поиском. Задача - найти правильную границу с помощью бинарного поиска. Этот код работает правильно, но проблема в том, что он недостаточно быстр. Как с этим справиться?

 using System;
 using System.Collections.Generic;

 namespace Autocomplete
 {
public class RightBorderTask
{
    public static int GetRightBorderIndex(IReadOnlyList<string> phrases,
                                           string prefix, int left, int right)
    {
        var middle = (right + left) / 2;
        while (left < right)
        {
            middle = (right + left) / 2;
            if (string.Compare(prefix, phrases[middle],
                               StringComparison.OrdinalIgnoreCase) < 0)
                right = middle;
            else left = middle + 1;
        }
        return (string.Compare(prefix, phrases[left - 1],
                               StringComparison.OrdinalIgnoreCase) 
                               >= 0) ? right : -1;
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...