グリッド、レポート、ドロップダウンボックスなどでユーザーにデータを表示しているとしましょう。問題のデータにはInvoice Numberというフィールドが含まれています。このフィールドには、時間の2/3の数値のみが含まれますが、残りの1/3の時間は英数字の混合です。
このため、どのソートアルゴリズムでも、アルファを数値ではなく数値でソートします。このため、1000は99よりはるかに前に来ます。値全体ではなく、最初の桁がソートされるためです。 000333などの他のアイテムは「333」として扱われず、222の前に表示されます。
ここに基準はありますか?すべての値を数値に変換し、それらを別の方法でソートする必要がありますか?それらはどのように統合されますか?または、英数字の並べ替えは正しい方法ですか?
Windows 7以降、Microsoftはファイル名でディレクトリを並べ替えるデフォルトの方法を「数値」並べ替えを使用するように変更しました。 (一部の情報 ここ )
その動作の仕様は見つかりませんでしたが、リバースエンジニアリングを行うことができました。このアルゴリズムは、2つの英数字文字列を比較し、どちらが最初に来るかを決定する必要があります。
各ファイル名をアルファベットと数字の部分に分割します。つまり、名前text123moretext456
がリスト{"text"
、"123"
、"moretext"
、"456"
}
2つの分割名の各部分について、次の比較を実行します。
次のような順序になります。
2
12
200000
1000000
a
a12
b2
text2
text2a
text2a2
text2a12
text2b
text12
text12a