python ソートの安定性

ソートの安定性について説明します。

ソートの安定性

ソートが安定であるとは、ある列(例えば列2)を指定してソートした際に、ある列(例えば 列2)の「同一の値を持つ行」の順序が維持されるということです。

ソートが安定である場合の例は①です。列2を指定してソートをした場合、列2の’O’を値に持つ行の順序は変更されていないことがわかります。ソート前もソート後も上から行1→行2の順序です。

ソートが安定で場合の出力例は②です。ソート前は上から行1→行2の順序でしたが、ソートが安定でない場合は上から行2→行1の順序になります。

from operator import itemgetter, attrgetter

human = [
    #名前(列1)     ,    血液型(列2),    体重(列3)
    ('tadasi'     ,    'O',            50  ), #行1
    ('kiyosi'     ,    'O',            100 ), #行2
    ('masasi'     ,    'A',            70  ), #行3
]

#①安定であるソート
s2 = sorted(human, key=itemgetter(1)) 
print(*s2, sep="\n")
"""出力
('masasi', 'A', 70)
('tadasi', 'O', 50)
('kiyosi', 'O', 100)
"""

#②ソートが安定でない場合の出力例
"""出力
('masasi', 'A', 70)
('kiyosi', 'O', 100)
('tadasi', 'O', 50)
"""

参考

ソート HOW TO — Python 3.9.4 ドキュメント
ソートの安定性と複合的なソート

Sorting algorithm – Wikipedia
安定性の説明

コメント

  1. […] python ソートの安定性ソートの安定性について説明します。knuth256.com2021.08.1… […]

タイトルとURLをコピーしました