Menu
Coddy logo textTech

Implementation (Part 2)

Coddyの「ヒープソート - DSAシリーズ」コースのレッスン 6/9。

ここでは、ヒープの構築と最大値の抽出の繰り返しを組み合わせます。

challenge icon

チャレンジ

中級

それでは、すべてを組み合わせて完全なアルゴリズムを作成しましょう。

整数の配列を受け取り、それを昇順にソートして返す heapSort という名前の関数を作成してください。

まず、インデックス n/2 - 1 から 0 までのすべての非リーフノードを sift-down することで、最大ヒープ(max-heap)を構築します。次に、ルート(最大値)をヒープの最後の要素と繰り返し入れ替え、ヒープのサイズを1つ縮小し、新しいルートを再び sift-down します。

ヒープを進行に合わせて縮小できるように、現在のヒープの size を引数に取る sift-down ヘルパー関数を使用してください。

自分で試してみよう

#include <stdlib.h>

int* heapSort(int* arr, int arr_size, int* returnSize) {
    // ここにコードを記述してください
    *returnSize = arr_size;
    return arr;
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ヒープソート - DSAシリーズのすべてのレッスン