みなさんこんにちわ。
fuku です。
おつかれさまです。^^)

ところで、
久しぶりに、
平成30年 春、
基本情報技術者試験、
問8 擬似言語 の、
設問1を 実装してみました。^^

何かのご参考になれば、幸いです。

 バグ等、ございましたら、ご連絡お願いいたします。

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

/* heap ^^ */

int p, pp, i, j, *d, *h, hnum;

void makeHeap(int *, int *, int);
int parent(int);
void swap(int *, int , int);


int main()
{

int data[7] = {30, 45, 60, 5, 10, 20, 15};
int heap[7] = {0,0,0,0,0,0,0}, ii=0;

makeHeap(data, heap, 7);

while(ii<7){
printf("%d\n", heap[ii]);
ii++;
}

}



void makeHeap(int data[], int heap[], int hnum)
{
int i, k;

for(i=0; i<hnum; i++) {
heap[i] = data[i];
k = i;

while(k>0) {

    if(heap[k]>heap[parent(k)]) {
    swap(heap, k, parent(k));
    k = parent(k);
    } else { break; }

    }

        }
};


int parent(int p){
pp = (p-1)/2;
return pp;
};

void swap(int heap[], int i, int j){
int tmp;
tmp = heap[i];
heap[i] = heap[j];
heap[j] = tmp;
};