Всем привет. Пацаны, выручайте пожаалуйста. Препод просто мозг выносит вторую пару. Я прочел 4 книги(не кнута), по делфи и плюсам, там +- то что даёт нейронка, но это полная неверная дичь.
В общем я пытаюсь сделать реализацию пирамидальной сортировки Кнута(строго его), алгоритм есть+диаграмма ненси-шердмана от препода.
Посмотрите диаграмму и код кто-нибудь, это верно я написал по алгу? Скажите пж. ps. код рабочий.
Диаграмма препода
Код который я подготовил +-. Скажите что тут может быть не так. Может что не верно?(пока не сдавал), может найдете какую-то оплошность? Я просто не знаю как 1 в 1 реализовать
Кто разбирается в алгоритмах помогите пжпжпж.
В общем я пытаюсь сделать реализацию пирамидальной сортировки Кнута(строго его), алгоритм есть+диаграмма ненси-шердмана от препода.
Посмотрите диаграмму и код кто-нибудь, это верно я написал по алгу? Скажите пж. ps. код рабочий.
Код который я подготовил +-. Скажите что тут может быть не так. Может что не верно?(пока не сдавал), может найдете какую-то оплошность? Я просто не знаю как 1 в 1 реализовать
C++:
void sortH(int* arK, int N)
{
int l = N / 2, r = N - 1, K;
// H1: начальная установка
while (l > 0) {
// H2: уменьшаем шаг
l = l - 1;
K = arK[l];
int i = l, j = 2 * i + 1;
// H3, H4: подготовиться к "протаскиванию"
while (j <= r) {
// H5: найти большего потомка
if (j < r && arK[j] < arK[j + 1]) {
j = j + 1;
}
// H6: завершить цикл, если K больше или равен arK[j]
if (K >= arK[j]) {
break;
}
// H7: подтащить его наверх
arK[i] = arK[j];
i = j;
j = 2 * i + 1;
}
// H8: записать K
arK[i] = K;
}
// Повторение процесса, извлечение элементов
while (r > 0) {
// Перемещаем корень кучи (максимум) в конец
K = arK[r];
arK[r] = arK[0];
r = r - 1;
// Восстанавливаем кучу
int i = 0, j = 1;
while (j <= r) {
// Найти большего потомка
if (j < r && arK[j] < arK[j + 1]) {
j = j + 1;
}
// Если K больше или равен потомку, выходим
if (K >= arK[j]) {
break;
}
// Поднимаем потомка
arK[i] = arK[j];
i = j;
j = 2 * i + 1;
}
// Записываем K на место
arK[i] = K;
}
}
Кто разбирается в алгоритмах помогите пжпжпж.
Последнее редактирование модератором: