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]となります。