名前をアルファベット順に並べ替える機能を持つプログラムを作っていますが、Array.Sort()を使いやすくなっていますが、関数の理解に役立つソート関数のアルゴリズムが必要ですアルファベット順の文字列をソートするC#
ここで
0
A
答えて
1
彼らは例外のクイックソート-theyチェックを使用して、すべてがOKであれば、彼らはこの召喚並び替えがあります:
internal void QuickSort(int left, int right) {
// Can use the much faster jit helpers for array access.
do {
int i = left;
int j = right;
// pre-sort the low, middle (pivot), and high values in place.
// this improves performance in the face of already sorted data, or
// data that is made up of multiple sorted runs appended together.
int middle = GetMedian(i, j);
SwapIfGreaterWithItems(i, middle); // swap the low with the mid point
SwapIfGreaterWithItems(i, j); // swap the low with the high
SwapIfGreaterWithItems(middle, j); // swap the middle with the high
Object x = keys[middle];
do {
// Add a try block here to detect IComparers (or their
// underlying IComparables, etc) that are bogus.
try {
while (comparer.Compare(keys[i], x) < 0) i++;
while (comparer.Compare(x, keys[j]) < 0) j--;
}
catch (IndexOutOfRangeException) {
throw new ArgumentException(Environment.GetResourceString("Arg_BogusIComparer", x, x.GetType().Name, comparer));
}
catch (Exception e) {
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_IComparerFailed"), e);
}
catch {
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_IComparerFailed"));
}
BCLDebug.Assert(i>=left && j<=right, "(i>=left && j<=right) Sort failed - Is your IComparer bogus?");
if (i > j) break;
if (i < j) {
Object key = keys[i];
keys[i] = keys[j];
keys[j] = key;
if (items != null) {
Object item = items[i];
items[i] = items[j];
items[j] = item;
}
}
i++;
j--;
} while (i <= j);
if (j - left <= right - i) {
if (left < j) QuickSort(left, j);
left = i;
}
else {
if (i < right) QuickSort(i, right);
right = j;
}
} while (left < right);
}
}
詳細情報は、それについて:https://en.wikipedia.org/wiki/Quicksort
+0
すてきな答え、いい仕事です。 –
関連する問題
- 1. アルファベット文字配列を昇順にソート
- 2. NSStringの文字をアルファベット順にソート
- 3. 2つの文字列を比較し、アルファベット順にソートする
- 4. アルファベット順の文字列をソートする方法Java
- 5. アルファベット順の文字列の長さでソートする方法は?
- 6. 2次元文字配列をアルファベット順にソートする?
- 7. 大文字アルファベット順に文字列を配置するC++
- 8. Cのリンクリストのアルファベット順ソート?
- 9. ソート名のアルファベット順にC
- 10. アルファベット順にアルファベット順にソート
- 11. C++:ソート方法/アルファベット順
- 12. ソート文字列がアルファベット順であり、全ての整数を順番に
- 13. SQL - アルファベット順にソート列
- 14. C++ - アルファベット文字列
- 15. 文字列をアルファベット順にソートする数値の基礎は何ですか?
- 16. R:n番目の文字の後ろにアルファベット順にソートする
- 17. PHPActiveRecordオブジェクトの配列をアルファベット順にソート
- 18. アルファベット順の配列をソートjavacript
- 19. Cでアルファベット順に名前をソート
- 20. アルファベット順の文字列リストの並べ替え(C)
- 21. awk - 文字列をアルファベット順にソートし、文字列内の重複を削除します。
- 22. 文字列EndsWith(アルファベット); C#
- 23. アルファベット順の文字列を注文するMySQL関数
- 24. Pythonで配列をアルファベット順にソート
- 25. セルから文字列値を取り出し、その文字をアルファベット順にソートする数式
- 26. コアデータを特殊文字でアルファベット順にソート
- 27. 文字列の一部をアルファベット順の逆順にソートするにはどうすればよいですか?
- 28. Javascriptは、文字列の先頭とアルファベット順にアルファベット順に一致します。
- 29. 個々の文字の文字列比較とアルファベット順
- 30. wpfアルファベット順のコンボボックスのソート
説明しているソート方法は、アルファベット順に基づいています。他の文字を比較する方法はありますか?一度すれば、それは単純なソートアルゴリズムです。 –
どの方法論が使用されているかわかりません。しかし、私が知っているものがここに記述されています。私はそれが最も効率的であると言っているわけではありません:https://en.m.wikipedia.org/wiki/Bubble_sort –
これは宿題のようなにおいがします:[宿題の質問方法](http://meta.stackexchange.com/a/10812)いくつかの助けを与えるかもしれない...最も重要なビットがある**あなた自身が最初に問題を解決するために誠意を持って試みる** – TemporalWolf