【发布时间】:2017-12-14 07:19:57
【问题描述】:
我有一个包含大约 100k 个整数对的列表,比如这些:
0, 12
0, 14
0, 1
0, 8
0, 2
0, 4
0, 3
1, 5
1, 11
1, 8
1, 2
2, 7
2, 9
2, 4
2, 5
2, 13
3, 12
3, 10
3, 4
3, 6
...
我需要对它们进行排序
0, 1
0, 2
0, 3
0, 4
0, 8
0, 12
0, 14
1, 2
1, 5
1, 8
1, 11
2, 4
2, 5
2, 7
2, 9
2, 13
3, 4
3, 6
...
目前我在做:
myList.Sort(comparer);
当比较器定义为:
class EdgeIntersectComparer : IComparer<EdgeIntersect>
{
public int Compare(EdgeIntersect l1, EdgeIntersect l2)
{
if (l1.V1 < l2.V1)
return -1;
if (l1.V1 > l2.V1)
return 1;
if (l1.V2 < l2.V2)
return -1;
if (l1.V2 > l2.V2)
return 1;
return 0;
}
}
我可以做些什么来提高执行速度?有没有更聪明的方法来解决这个问题?
谢谢。
编辑:
经过myList.OrderBy(e => e.V1).ThenBy(e => e.V2)测试,速度较慢。
【问题讨论】:
-
目前列表按对的第一个整数排序...
-
@Chris:边被定义为一对整数...
-
我不知道它是否会更快(可能不会)但您可以尝试使用 Linq:
var sorted = myList.OrderBy(e => e.V1).ThenBy(e => e.V2); -
“我能做些什么来提高执行速度?有没有更聪明的方法来解决这个问题?”...不确定是否有人正在阅读该部分。
标签: c# .net sorting graphics quicksort