Хорошо, у меня есть задание найти самый маленький K-й элемент в списке, используя несколько различных методов ....
Первый метод - это сортировка списка, а затем возвращение K-го наименьшего элемента.просто, мой менталитет: скажем, список = 10 элементов, сортировка списка в порядке возрастания, затем возврат элемента в 10-ю позицию
следующий метод использует раздел из быстрой сортировки:
«Второй алгоритм заключается в применении процедуры Partition, используемой в быстрой сортировке. Процедура разделяет массив так, что все элементы, меньшие, чем какой-либо элемент сводки, располагаются перед ним в массиве, а все элементы, размер которых превышает этот элемент сводки, идут после него. Слот, в которомЭлемент pivot расположен и называется pivotposition. Мы можем решить проблему выбора путем разбиения, пока элемент pivot не окажется в k-м слоте. Мы делаем это путем рекурсивного разбиения левого подмассива, если k меньше, чем pivotposition, и рекурсивным разбиением правогоПодмассив, если k больше, чем поворот. Когда k = поворот, мы закончили. "
Скажем, у меня есть список из 10 элементов:
3 8 9 2 4 5 17 10 6, где 5 - это точка. Я знаю, что обычно у меня будет 2 массива
32 4 1 и 8 9 7 10 6
но я не понимаю: «Мы можем решить проблему выбора, разбивая ее, пока элемент поворота не окажется в k-м слоте».
что такое k-й слот?для меня я продолжаю думать, kth = длина массива, так что в этом случае 10. который будет иметь значение 6, которое, очевидно, не самое низкое ... и не правильно.
можеткто-то использует этот образец массива и просто показывает мне, что означает этот алгоритм и как он находит k-й / самый маленький элемент?спасибо