【发布时间】:2020-04-05 14:02:47
【问题描述】:
各位程序员们好,
我正在尝试对二维数组进行排序。这个数组表示一个对象的集合,这些对象的属性在下面的列表中具有一个值。因此不必保存原始列表。
起始情况是:
var list = new List<string>
{
"10-158-6",
"11-158-6",
"90-158-6",
"20-15438-6",
"10-158-6",
"10-158-6-3434",
"10-1528-6"
};
结果应该是
var list = new List<string>
{
"10-158-6",
"10-158-6",
"10-1528-6"
"10-158-6-3434",
"11-158-6",
"20-15438-6",
"90-158-6",
};
它应该首先在第一部分订购 -> 然后是第二部分 -> 等等。
我认为对这些字符串进行排序几乎是不可能的,所以我将其转换为二维列表。我找到了对多维列表进行排序的不同解决方案,但没有一个可以用于这个问题。我也不知道从哪里开始......
有人知道如何编写一个没有不必要的大 O 的排序算法吗?
提前致谢!
杰伦
【问题讨论】:
-
字典序有什么区别?您是否尝试直接对字符串进行排序?
-
Jep,这是我尝试的第一件事。除数字外的其他字符始终排在数字之前。所以 10-1528 排在 10-158 之前- 排序时,应该是其他的
-
为什么写这个问题不能对多维列表进行排序呢?你能展示你的尝试吗?
-
使用版本可以吗?
var versions = list.Select(x => new Version(x.Replace('-','.'))).ToList(); versions.Sort();这样做会成功吗,或者从破折号切换到点是不行的。