Я пытаюсь найти k-й наименьший элемент, для которого я использую Max Heap.Как я понимаю, мне нужно отсортировать массив в порядке возрастания и вернуться, когда я получу k-й наименьший элемент.Если я правильно понимаю, максимальную кучу лучше всего использовать для сортировки массива в возрастающем порядке, но минимальную кучу для нахождения k-го наименьшего элемента.Это где не получить это.Как я могу отсортировать массив в порядке возрастания, а также вернуть kth мин?У меня проблема с поиском, как получить k-й наименьший элемент, если я использую Max Heap, так как не имеет смысла ждать, пока массив будет полностью отсортирован, затем обойти его циклом for и получить k-й наименьшийне будет делать HeapSort O (N log N), поскольку для обхода массива потребуется другой цикл for.И если я использую кучу Min, это будет в порядке убывания.
Max Heap сделан: [10,9, 8, 5, 1, 8, 3, 5, 5, 1]
[9, 5, 8, 5, 1, 8, 3, 1, 5, 10]
[8, 5, 8, 5, 1, 5, 3, 1, 9, 10]
[8, 5, 5, 5, 1, 1, 3, 8, 9, 10]
[5, 5, 5, 3, 1, 1, 8, 8, 9, 10]
[5, 3, 5, 1, 1, 5, 8, 8, 9, 10]
[5, 3, 1, 1, 5, 5, 8, 8, 9, 10]
[3, 1, 1, 5, 5, 5, 8, 8, 9, 10]
[1, 1, 3, 5, 5, 5, 5, 8, 8, 9, 10]
[1, 1, 3, 5, 5, 5, 8, 8, 9, 10]
Я не могу понять, как получить k-е наименьшее.Я думаю о Min Heap, потому что наименьший всегда индекс 0, но что используется для создания уменьшающегося массива?
Это мой метод, который является Heapsort.Он вызывает buildHeap, а затем выполняет сортировку.