Я выучил сортировку кучи с визуальным представлением ее с помощью позорной древовидной диаграммы ( здесь ), поэтому я решил найти способ распечатать ее, и я очень хорошо продвинулся, далеко. Похоже, моя единственная проблема заключается в том, что если в строке больше нет значений для заполнения, моя программа по какой-то причине выводит нули.
Я уверен, что это, вероятно, ошибка в моем коде или дополнительная строка, которую нужно добавить, но я также ищу совет, если это был лучший подход. Код ниже.
#include <stdio.h>
int HeapArray[] = {165, 245, 398, 426, 575, 661, 775, 895, 901, 1028, 1184, 1283, 1350,1427, 1598, 1698};
int main()
{
int i = 0, numL = 1;
int j, k;
for(k = 0; k < 6; k++)
{
if(HeapArray[i] == 0)
break;
for(j = 0; j < numL;j++)
{
printf("%d ", HeapArray[i]);
i++;
}
printf("\n");
numL *= 2;
}
return 0;
}
Что стоит упомянуть:
- В другом самом цикле for я использую значение 6 в качестве максимального числа строк для печати, однако программа прекращает печатать в строке с последними значениями массива.
- Я не выполнил никакого выравнивания, чтобы сделать диаграмму точной на 100%, так как казалось, что достаточно просто уйти напоследок (т. Е. Без лишнего кода, чтобы сбить меня с толку).