Эта ссылка может помочь понять доказательство рандомизированном быстрого выбора, http://pine.cs.yale.edu/pinewiki/QuickSelect,
Идея за получение Kth порядка статистика , выберите точку поворота и разделите данные, как это было предложено путем быстрой сортировки, и выясните, какой раздел находится в элементе поиска. . Разделение имеет сложность O (n). После разметки вам нужно выбрать только один из результирующего раздела для дальнейшей обработки в отличие от быстрой сортировки, где вам нужно обрабатывать оба.
В приведенном ниже описании, я не пытаюсь доказать, но хотел дать интуитивное мысли, чтобы понять ожидаемую сложность,
Для простоты допустим, на каждой итерации, стержень разбивает массив на равные части , то сложность явно O (п), а
n + (n/2) + (n/4) ... <= c.n, O(n)
для интуитивного понимания, получая наихудшее секционирование, где вы должны обработать (N-1) элементы в каждой итерации происходит с вероятностью просто (1/п). Таким образом, сложность худшего случая в любом случае равна O (n^2).
В любом случае, если вы хотите строгое доказательство ожидаемой сложности, вы можете пройти через предоставленную ссылку.
* quickselect * - это имя алгоритма. [Вот еще вопрос об этом] (http://stackoverflow.com/questions/10846482/quickselect-algorithm-understanding) и [охват википедии] (https://en.wikipedia.org/wiki/Selection_algorithm#Partition-based_general_selection_algorithm) в котором говорится, что это O (n) среднее, но O (n^2) в худшем случае. (Я предполагаю, что книга на самом деле имеет quickselect, так как это алгоритм выбора, основанный на быстрой сортировке. У меня нет книги для проверки.) –