みなさんこんにちわ。
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;
};
コメント