我需要对一些代码进行排序,但方式很奇怪
我需要按非正常顺序排序,我需要先排序 40 岁,然后是 50 岁、90 岁、70 岁、80 岁、60 岁、20 岁、30 岁、10 岁、00 岁。
解决这个问题的最佳方法是什么?
它在 C#.net 3.5 中
最佳答案
您通常可以提供自定义方法来进行排序(排序方法或包含这些值的排序集合类)。
或者您是在问该方法中的算法应该是什么?
对于算法,可以使用以下方法:
int getFirstOrder(int v) {
if (50 <= v && v <= 59) {
return 1;
} else if (90 <= v && v <= 99) {
return 2;
}
// and so on
}
int Compare (int v1, int v2)
{
int o1 = getFirstOrder(v1);
int o2 = getFirstOrder(v2);
if (o1 < o2 || (o1 == o2 && v1 < v2)) {
return -1;
} else if (o1 > o2 || (o1 == o2 && v1 > v2)) {
return 1;
} else {
return 0;
}
}
我确信有一种更有效的方法(尤其是对于 getFirstOrder()
,但这应该会让您走上正确的方向
关于c# - 按自定义顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10144582/