概要 『珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造』コラム1 の擬似コードを(少しアレンジして)Goで実装してみました お題 アメリカの(少し昔の)無料電話番号は『地域コード(800)』+『7桁の整数』 ソートされていないこの7桁の整数のリストを、昇順ソートして出力する やり方 整数をビット列で表現することで、使うメモリ&アクセスを節約し速度を上げる戦略 1~9,999,999までの9,999,999個の整数を64bit環境でメモリ展開すると Int配列: 約76.3MB ビット列: 約1.2MB 「入力ファイルに整数iがあればi番目のビットを1(オン)にする」 つまり16以下の整数で{1,2,3,5,8,13}を0111010010000100の16bit=2Byteで表現する サンプルコード(ビット列を使用) バケットソートの一種(+ビット圧縮でメモリ効率化) pac