k-й наименьший элемент с использованием min-heap

string.split (разделитель, предел) - это метод, который вы хотите

"someone@example.com".split("@")[0]

0
задан Hanoi 18 January 2019 в 06:24
поделиться

1 ответ

В heapify () вы используете

swap(smallest,arr[i]);

, который обменивает значения в наименьшее и arr [i]. Но arr [l (i)] или arr [r (i)] не изменяется. На самом деле это копирует меньшее значение arr [l (i)] и arr [r (i)] в arr [i].

Также в основном вы делаете

for (int i = 0; i < k - 1; i--) {

, который отсчитывает i до достижения INT_MIN вместо того, чтобы считать до k. Это быстро приводит к тому, что куча становится пустой, а код перестаёт работать.

PS: почему бы не использовать std :: make_heap и friends?

0
ответ дан Goswin von Brederlow 18 January 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: