1
我學會了堆用臭名昭着的樹圖(here)的可視化表示排序,所以我着手尋找一種方法來打印出一個,我已經取得進展到目前爲止很好。我唯一的問題似乎是,如果沒有更多的值填滿行,我的程序似乎打印零出於某種原因。堆排序「視覺」樹打印額外的零
我確定這可能是我的代碼中的錯誤,或者需要添加額外的行,但如果這是最好的方法,我也在尋找建議。下面的代碼。
#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%準確,因爲它似乎很容易離開最後(即沒有額外的代碼來混淆我)。