スターリンソートやアベソートやコミューンソートで腹を抱えて笑ったわけだが、ソートという概念に要素数や要素そのものに頓着しないというフウチョウを持ち込むなら、以下のアルゴリズム(実際の処理は知らん)が最速になるはずだ。
実装
sort.py
from typing import List, Any
def sort(data):
# type: (List[Any]) -> None
data.clear()
def main():
# type: () -> None
data = [1, 2, 1, 1, 4, 3, 9,]
print(F'Before Data: {data}')
sort(data)
print(F' After Data: {data}')
if __name__ == '__main__':
main()
λ python sort.py
Before Data: [1, 2, 1, 1, 4, 3, 9]
After Data: []
見ての通り、昇順に並べ替えられている。 左様でございますな?
計算量は理論1上 $O(1)$ だと思うけどどうでもいいですね。
命名
スターリンソートのようなセンスのいい名前が思いつかない。
とりあえずドゥームズデイソートとでも名付けておこう。
ぶっちゃけ
多分既出だと思うけどこんなもん既出かどうか調べている暇があったら寝なさい。
睡眠不足はいい仕事の大敵です。
あっ、普通にいるわ。
追記
ネタかぶりをして悔しかったので、続きました。
-
Python 内部での実際の処理がどうなっているかは知らないけど、理屈の上では、の意味。 なんなら空リストと取り替えればいい。 ↩