2012-01-16 9 views
0

私は、すべての可能なソートアルゴリズムを指定された要件と最適なフィッティングアルゴリズムで生成するソフトウェアを作成することを考えています。あなたはそのソフトウェアにどのような現実的な要件を指定しますか?どのようにそれらを指定しますか?ソートアルゴリズムのファクトリにはどのようなパラメータがありますか?

私の提案は以下のとおりです。

getSortingAlgorithm(int memorySize, int timeConstraintInMillisec); 

//getSortingAlgorithm("O(n)", "O(n*log(n))"); 
getSortingAlgorithm(AssymptomaticConstaint memoryConstraint, AssymptomaticConstaint timeConstraint); 

硬化の他のアイデア、これらの制約を緩和しますか?

答えて

0

要素の数キャッシュのサイズ/タイプは、ソートのキャッシュのパフォーマンスを最適化するために、conciderationかもしれません。

整数ソートがcomparasionsベースのアルゴリズムに限定されていないため、要素にのint値があるかどうかを示すブール値です。

スレッド数を使用することも問題になる場合があります。ライブラリで並列アルゴリズムも作成してください。

0

また、安定/不安定なパラメータを持つこともできます。例えば、バブルソートと選択のための

ソート両方の時間複雑性を有する:O(N 2)、メモリ:O(1)

が、バブルソートは安定です。 http://en.wikipedia.org/wiki/Category:Stable_sorts

0

速度とストレージを最適化します。

保存容量を制限し、「バッキングストア」(「チャンク」ソート)用のファイルを使用します。

同一品目の注文を維持する(またはしない)。

インデックスの並べ替え?

安定性と最高の平均速度vs「ほぼ並べ替えられた」データセットを利用する。

データセットのサイズ - 小さいもののほうが、設定が簡単でシンプルなソートが優れています。

キーのサイズ - これは使用されるデータ構造に影響します。

関連する問題