

配列`data[i]`に格納されている要素値を配列`heap[i]`へ順次格納し、配列`heap`の要素値を入れ替える関数`upheap()`の部分と。また`main`関数内のコメントアウトを削除し、`heap[0]`の値が
`heap[size-1]`に、`size`が`size-1`に置き換える。課題の条件を満たすように、置き換えられたれた
`heap[0]`の値を入れ替える関数`downheap()`の部分だけがどのようにしたらいいのかわかりませんでした。わかる方どうかお願いします。

[code]

    #include <stdio.h>
    #include <stdlib.h>
    void printarray(int heap[], int size);
    void swap(int heap[], int i, int j);
    void upheap(int heap[], int i);
    void downheap(int heap[], int i, int size);
    int main(void){
     int data[] = {8, 98, 87, 36, 35, 54, 11, 33, 6, 79}, size = 10;
     int *heap, i;
     heap = (int *) malloc(sizeof(int)*size); 
     for(i = 0; i < size; i++){ 
     heap[i] = data[i];
     upheap(heap, i); 
     }
     printarray(heap, size);
     // heap[0] = heap[--size]; 
     // downheap(heap, 0, size);
     // printarray(heap, size);
     return 0;
    }
    void printarray(int heap[], int size){
     int i;
     for (i = 0; i < size; i++)
     printf("%2d%c", heap[i], i == size-1 ? '\n': ' '); 
    }
    void swap(int heap[], int i, int j){
     int tmp = heap[i];
     heap[i] = heap[j]; 
     heap[j] = tmp; 
    }
    void upheap(int heap[], int i){
    
    }
    void downheap(int heap[], int i, int size){
    
    }
    
[/code]


CC BY-SA 4.0
2022-01-12T07:54:31.730
85645
2022-01-12T08:11:39.080
2022-01-12T08:11:39.080
32986
50833
question
c windows
二分探索木と配列について