我在做,有一个功能名称字母顺序排序的程序,我很容易使用的Array.Sort()和它的工作,但我需要排序功能的算法,帮助我理解功能更加字符串进行排序按字母顺序算法的c#
0
A
回答
1
这里是Array.cs:http://www.dotnetframework.org/default.aspx/DotNET/DotNET/[email protected]/untmp/whidbey/REDBITS/ndp/clr/src/BCL/System/[email protected]/2/[email protected] 有排序方法
他们使用异常的快速排序 - 他们检查,如果一切正常,他们召唤这样的:
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);
}
}
+0
干净的答案,很好的工作。 –
相关问题
- 1. 按字母顺序排序字符串
- 2. 排序字符串按字母顺序
- 3. 字母用C字符串进行排序的顺序
- 4. C++:按字符串对字符串进行排序,然后按字母顺序排序
- 5. C#排序Arraylist字符串按字母顺序排列
- 6. 按字母顺序排序使用插入排序算法c#
- 7. 按字母顺序对NSString中的字符进行排序
- 8. 如何按字母顺序排序字符串的字符?
- 9. 按字母顺序在varchar2中对字符进行排序
- 10. 按字母顺序排序,然后按字母顺序排列
- 11. 按照升序和字母顺序对单个字符串进行排序
- 12. 行进行排序的字母顺序
- 13. 按字母顺序排列字符串中的字母 - SAS
- 14. 按字母顺序排序
- 15. 按字母顺序排序
- 16. 按字母顺序排序
- 17. 按字母顺序排序
- 18. 排序按字母顺序
- 19. 按字母顺序排序
- 20. 按字母顺序排序
- 21. 无法按字母顺序对mysql表格行进行排序
- 22. 使用PHP按字母顺序对html字符串进行排序
- 23. 如何按照字母顺序对空字符串进行排序WPF GridView?
- 24. 按字母顺序对字符串进行排序,但首先使用目录
- 25. 基于字符串属性按字母顺序对数组进行排序
- 26. 按字母顺序排列字符串C
- 27. 按字母顺序排列c字符串数组
- 28. C++按字母顺序插入排序
- 29. 按字母顺序排序C++
- 30. 按字母顺序排列数组,并按首字母进行排序
您所描述的排序方法是基于字母顺序。想想,你有什么办法比较不同的字母吗?一旦你做了,它就是一个简单的排序算法。 –
我不确定使用哪种方法。但是我知道的一个在这里有描述。我不是说这是最有效的:https://en.m.wikipedia.org/wiki/Bubble_sort –
这闻起来像家庭作业对我说:【如何问功课问题](http://meta.stackexchange.com/A/10812)可能会提供一些帮助......最重要的一点感**作出诚信首先尝试自行解决问题** – TemporalWolf