アイテムのリストをソートする必要がありますが、プログラミング言語がこのシナリオを援助しない場合は、これを行うにはどのような方法が良いでしょうか?これは仮説的ですが、価値のある質問です。言語に機能がない場合、項目のリストをアルファベット順に並べ替えますか?
おかげ
アイテムのリストをソートする必要がありますが、プログラミング言語がこのシナリオを援助しない場合は、これを行うにはどのような方法が良いでしょうか?これは仮説的ですが、価値のある質問です。言語に機能がない場合、項目のリストをアルファベット順に並べ替えますか?
おかげ
2部:ソートする方法
アルファベット順のソートのために最も適切であるソートの2つの一般的なタイプは、次のとおり比較MSD radix sort辞書
比較の並べ替えがより一般的です(並べ替えがより一般的であることもあります)。可変長文字列に基数ソートを適用すると、固定幅の基数並べ替えと比べてやや面倒です。さまざまなトレードオフを選択することが多くありますが、実際には2つのアイテムの実際の比較をソートアルゴリズムとは別の「ブラックボックス」として扱います。
したがって、必要な残りの機能は辞書編集の比較です。 2つの文字列を比較する方法は、最初のペアが異なるところが見つかるまで各文字を順番に見ることです。この文字が「less」の場合、左の文字列は「less」になります。違いが見つからない場合は、文字列の長さが同じか(等しい場合は等しい)、または一致しない場合(短い場合は「小さい」)です。
文字セットがASCIIの場合、大文字と小文字を区別するか大文字と小文字を区別しないかをアルファベット順に比較するのは簡単です。あなたのキャラクタセットが完全なUnicodeなら、アルファベット順を得るには、言語サポート、サードパーティのライブラリ、または非常に大きな文字プロパティのテーブルが必要になることがあります。
Wikipediaのこの非常に徹底した報道があります:http://en.wikipedia.org/wiki/Sorting_algorithm
それは長い共通アルゴリズムのリスト、およびそれぞれの長所と短所についての情報を持っています。
使用Trie =)
私はあなたを落としていませんでしたが、大きなサイズのデータでは、データサイズを最小限に抑えるためにTrieを使用するのが便利です。つまり、1000個のアイテムのリストがあり、各文字列の長さは少なくとも10です。深さが '10 'で中央値の各ノードが' 10'のサブノードを持っている場合、文字列を検索するには '100'チェックの周りに行うべきですが、QSのように並べ替えると' 10チェックし、検索の複雑さはTrieほど難しくありません。 –
ステップは、任意のソートアルゴリズムを書き込むと同じです。比較関数を作成します。その後、ソートアルゴリズムが適切であることを使用して、ほとんどの場合クイックソートです。比較機能のためには、各文字に数値を割り当てて、その文字をランクごとに比較する必要があります。これはあなたに字句分類を与えるでしょうが、あなたが何らかの意味を持っていたと仮定したものです。
基本的に、あなたの質問に対する答えは、ソートの仕組みを理解することです。良い参考資料はJonathan Shewchukの同じvideo lecturesです。
3時間を与えると、基本が順調に進んでいます。 :)質問へ
あなたがそれを発見していないとしてreally good toolが質問
のこの種のためのインターネット上であります、ここでは良い出発点だ:quicksort
これは仮定の問題ではありません:なし内蔵した言語がありますアイテムのリストをソートする能力。 –