Как найти наименьшее значение, которое больше или равное значению в наборе в поистине O (log n) времени?C#

Место общения программистов C#
Ответить
Anonymous
 Как найти наименьшее значение, которое больше или равное значению в наборе в поистине O (log n) времени?

Сообщение Anonymous »

Я уже давно выучил C#, однако мой основной язык все еще C ++. Из -за этого я испытывал некоторые структуры данных в C#, которые аналогичны таковым в C ++.
в c ++ std :: set , если вы хотите найти наименьшее значение, которое больше или равное x, вам просто нужно вызвать простую функцию Lower_bound/opper_bound в O (log n).std::set container = {1, 10, 30};
std::set ::iterator it = container.lower_bound(5); //pointer to the least value >= 5, null if there isn't any

std::cout 2 * x));

Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
for (int i = 100; i > 0; --i) {
int a = GetMinRange(ss, ss.Min + i % 10, ss.Max);
int b = GetMaxRange(ss, ss.Min + i % 10, ss.Max);
}

stopwatch.Stop();
Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
}
}
< /code>
Time elapsed: 00:00:13.1506279


Подробнее здесь: https://stackoverflow.com/questions/797 ... n-a-set-in
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»