図書館ソート
図書館ソート(としょかんソート)またはライブラリソート(英: library sort, gapped insertion sort)は、ソートのアルゴリズムの一つ。挿入ソートをベースとし、挿入操作を高速化するために配列に隙間(gap)を設けるもの。名前は次のアナロジーに由来する:
司書が長い本棚にアルファベット順に本を陳列しようとしているとする。本棚は左端がAで始まり、右端のZの終わりまで隙間なく本で埋まっている。司書が新しい本をBの区画に収めるには、Bの区画に適切な位置を見つけ、スペースを空けるために後ろのすべての本をずらす必要がある。これが挿入ソートである。しかし、各区画の間(BとCの境界など)に空白があったなら、新しい本のためにずらすべき本の数は少なくて済む。これが図書館ソートの基本的な原理である。
このアルゴリズムは2004年にMichael A. Bender、Martín Farach-ColtonおよびMiguel Mosteiroによって提案され、2006年に発表された。
図書館ソートはそのベースとなる挿入ソートと同様、安定な比較ソートであり、オンラインアルゴリズムとして実行可能。