Реализации алгоритмов/Сортировка/Пирамидальная: различия между версиями
Содержимое удалено Содержимое добавлено
Нет описания правки |
|||
Строка 120:
void iswap (int &n1, int &n2)
{ int temp = n1;
n1 = n2;
Строка 126 ⟶ 127 :
}
int main ()
{ int a[n];
// Для наглядности заполняем массив числами от n до 0.
for (
a[i] = n - i;
std::cout << a[i] << ' ';
Строка 139 ⟶ 141 :
// Сортирует по возрастанию. Чтобы получить сортировку по убыванию,
// поменяйте знаки сравнения в строчках, помеченных /*(знак)*/
bool b;
do
{
b = false;
for (
{
if (i * 2 + 2 + sh < n) {
if ((a[i + sh] > /*<*/ a[i * 2 + 1 + sh]) || (a[i + sh] > /*<*/ a[i * 2 + 2 + sh])) {
if (a[i * 2 + 1 + sh] < /*>*/ a[i * 2 + 2 + sh]) {
iswap(a[i + sh], a[i * 2 + 1 + sh]);
b = true;
}
else if (a[i * 2 + 2 + sh] < /*>*/ a[i * 2 + 1 + sh]) {
iswap(a[i + sh], a[i * 2 + 2 + sh]);
b = true;
Строка 157 ⟶ 166 :
// с её помощью можно отсортировать пирамиду
// состоящую всего лишь из трёх элементов
if (a[i * 2 + 2 + sh] < /*>*/ a[i * 2 + 1 + sh])
{
iswap(a[i * 2 + 1 + sh], a[i * 2 + 2 + sh]);
b = true;
}
}
else if (i * 2 + 1 + sh < n) {
if (a[i + sh] > /*<*/ a[ i * 2 + 1 + sh]) {
iswap(a[i + sh], a[i * 2 + 1 + sh]);
b = true;
Строка 173 ⟶ 186 :
std::cout << std::endl << std::endl;
for (
std::cout << a[i] << ' ';
|