Python のヒープソートでインデックスを取得する方法

Pythonでheapqモジュールを使用してヒープソートを実行し、要素のインデックスを出力します。

以下は、そのコードの例です。

import heapq

def heap_sort_with_index(arr):
    heap = []
    for i, num in enumerate(arr):
        heapq.heappush(heap, (num, i))
    
    sorted_arr = []
    while heap:
        sorted_arr.append(heapq.heappop(heap)[1])
    
    return sorted_arr

上のコードでは、配列内の要素を`num`、インデックスを`i`として、`heapq.heappush()`によってヒープに要素`(num, i)`が追加されています。これによりヒープ内の各要素はタプルとなり、タプルの最初の要素として配列内の要素が、2番目の要素としてインデックスが含まれます。

次に、heapq.heappop() を使ってヒープから要素を取り出し、そのインデックスを sorted_arr に追加します。最終的に sorted_arr を返します。sorted_arr は、要素のインデックスの小さい順に並べたリストです。

本質的に日本語で言い換えるだけで、選択肢は1つだけでかまいません。

arr = [4, 2, 7, 1, 9, 5]
sorted_indexes = heap_sort_with_index(arr)
print(sorted_indexes)  # 输出 [3, 1, 0, 5, 2, 4]

上記の例では、元の配列arrが[4, 2, 7, 1, 9, 5]である時、ヒープソートの後に得られる要素のインデックスリストは[3, 1, 0, 5, 2, 4]となります。

bannerAds