blog.monophile.net

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。 また、計算を主題に制作を行い、現代音楽作品や公共インスタレーション作品など技術提供を行う。 三輪眞弘に師事する。

List

pythonでヒープソート

pythonではSortedList的なものが標準モジュールにないみたいで、 ちょこっと工夫しないといけないみたいです。 bisectを使う方法ではSortedListに近くなりますが、 いろんな要素をポンポン追加して、最小の値だけを取り出したい! なんていうときはheapqを使えば良いみたいです。 (友だちに教えてもらいました。)

code

import random
import heapq

dim = 10
rands = [ random.randint(0,10) for _ in range(dim) ]
for i in range(dim):
    print rands[i],
print
heapq.heapify(rands)
for _ in range(dim):
    print heapq.heappop(rands),

out

8 10 8 2 10 4 4 6 7 9   # ソート前
2 4 4 6 7 8 8 9 10 10   # ソート後