使用C#的字典序排序算法

3

我正在努力编写一个排序算法,可以按以下方式对单词中的字符进行字典序(按字母顺序)排序:

单词的字典序排序:- Contamination

字典序排序的文本               索引
------------------         ----------
amination                      0
ation                               1
contamination             2
ination                              3
ion                                  4
mination                            5
n                                           6
nation                                 7
ntamination                     8
on                                          9
ontamination                    10
tamination                        11
tion                                        12

请问有人能够帮忙编写伪代码/或使用C#或VB.NET实现上述单词的字典序排序吗?


那么你需要知道如何按字典顺序排序文档,给定按字典顺序排序的文本示例?(例如,不假设已知字母表?) - Jeff Foster
3
你已经有了什么代码? - Rowland Shaw
4个回答

6
您可以简单地执行以下操作:
var parts = new List<string>();
for (int i = 0; i < word.Length; i++)
    parts.Add(word.Substring(i));

parts.Sort();

输出应该符合您的期望。

3
string str = "contamination";
IEnumerable<string> sortedSubstrings =
    Enumerable.Range(0, str.Length)
              .Select(i => str.Substring(i))
              .OrderBy(s => s);

1

只需尝试这个:

Array.Sort(yourCollection);

0

默认的 C# 排序函数按字典顺序排序字符串,因此在您的情况下:

YourList.Sort();

如果你想自定义排序函数,可以将一个函数传递给Sort方法:

YourList.Sort((a, b) => SomeSortingFunction(a,b));

当你编写 SomeSortingFunction 函数时,请确保该函数返回一个负值,如果a在b之前,返回一个正值,如果a在b之后,并且如果它们相等,则返回零。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接