整数の配列を辞書順に並べ替える C++



整数の大きな配列 (たとえば、100 万要素) を辞書順に並べ替えたいと考えています。


例:


input [] = { 100, 21 , 22 , 99 , 1  , 927 }
sorted[] = { 1 , 100, 21 , 22 , 927, 99 }

私は可能な限り簡単な方法でそれを行いました:



  • すべての数値を文字列に変換します (膨大なメモリを必要とするため、非常にコストがかかります)

  • std:sort を使用 strcmp で 比較機能として

  • 文字列を整数に戻す


これよりも良い方法はありますか?


答え:


std::sort() を使用 適切な比較機能付き。これにより、メモリ要件が削減されます。


比較関数は n % 10 を使用できます 、 n / 10 % 10n / 100 % 10 個々の数字にアクセスするなど (正の整数の場合。負の整数の場合は動作が少し異なります)。