Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Устойчивость — Устойчивая
Устойчивость ломается не во время строительства кучи
//То из левого и правого потомка выбираем наименьшего
if (a[child] >= a[child + 1]) {
child += 1;
}
//Родитель меньше потомков?
if (T < a[child]) {
//Тогда с этим родителем и его потомками разобрались
done = true;
//Родитель НЕ меньше чем наименьший из его потомков.
//Перемещаем потомка на место родителя
//и с родителем в цикле сравниваем уже потомков этого потомка
} else {
a[parent] = a[child];
parent = child;
child = 2 * (parent + 1) - 1;
}
В данном случае двойка обменяется со второй единицей, то есть продвинется в «своём» направлении.
Устойчивая (стабильная) сортировка — сортировка, которая не меняет относительный порядок сортируемых элементов, имеющих одинаковые ключи. (с) Wikipedia
2 1a 1b
1a 1b 2
1b 1a 2
То есть первая невозрастающая куча передвигает небольшие элементы в начало (где они и должны быть, ибо сортируем по возрастанию)
... 1a 1b 1c ...
J-сортировка