2017-02-22 14 views
0

Я пытаюсь написать функцию, которая принимает число в качестве входных данных и выводит предыдущий и следующий номера из несортированного списка в отсортированном порядке. например, если список [29,1,49,8], вызов функции (8) должен вернуть [1,29] . Только возможное решение с минимальной сложностью avg - это сортировка, есть ли какие-либо другие методы, которые имеют меньше avg сложность? Список случайным образом генерируется фиксированного размера 100FInd немедленное большое и маленькое число для числа из несортированного списка без сортировки?

+0

Что делать, если число меньше (или больше) запрашиваемого значения. То есть, если ваш список «[29, 1, 49, 8]», а вызов - 'function (50)'? Кроме того, будет ли более одного вызова функции в списке? –

+0

О! Я даже не думал об этом сценарии, тогда мы должны сначала проверить, существует ли элемент или нет, а затем продолжить. Думаю, что будет функция, но она может вызывать или не может функционировать сама по себе. Все предложения Джима? –

ответ

1

Не нужно сортировать. Просто пройдите через массив и сохраните best_delta_positive и best_delta_negative вместе с индексами, где они были найдены, если необходимо.

+0

Будет ли это работать, если список [29,22,65,8], где нет дельта-отрицательного?. Список случайным образом сгенерирован –

+0

Удивительный !, это будет работать в этой ситуации. Спасибо Malcolm –