整数の大きな配列 (たとえば、100 万要素) を辞書順に並べ替えたいと考えています。
例:
input [] = { 100, 21 , 22 , 99 , 1 , 927 }
sorted[] = { 1 , 100, 21 , 22 , 927, 99 }
私は可能な限り簡単な方法でそれを行いました:
- すべての数値を文字列に変換します (膨大なメモリを必要とするため、非常にコストがかかります)
std:sort
を使用strcmp
で 比較機能として- 文字列を整数に戻す
これよりも良い方法はありますか?
答え:
std::sort()
を使用 適切な比較機能付き。これにより、メモリ要件が削減されます。
比較関数は n % 10
を使用できます 、 n / 10 % 10
、 n / 100 % 10
個々の数字にアクセスするなど (正の整数の場合。負の整数の場合は動作が少し異なります)。