【发布时间】:2012-11-25 01:16:22
【问题描述】:
如果一个类型实现了IComparable<T>,并且您有一个包含 100 个元素的此类型的集合。当你在这个集合上调用 Sort 方法时,CompareTo 方法会被调用多少次,如何调用?会这样用吗?
CompareTo(item0, item1);
CompareTo(item1, item2);
CompareTo(item2, item3);
CompareTo(item3, item4);
...
CompareTo(item97, item98);
CompareTo(item98, item99);
编辑:基本上我要做的是将这种排序方式转变为基于值的排序,在其中我为每个项目分配一些值,然后对它们进行排序。很难解释,但我无法使用基于 -1,0,1 的排序函数来解决这个问题。但我只有一个 CompareTo 函数,我需要用它来对项目进行排序。所以我需要为每一项生成一些值,然后程序会从最小值到最大值进行排序。
【问题讨论】:
-
这完全取决于 IComparable
的特定实现,不是吗? -
我不这么认为,因为 CompareTo 总是会返回 -1、0 或 1。
-
@mwilson 实际上这完全取决于
Sort方法(使用的算法)和数据本身:) -
这取决于排序算法和数据的未排序程度。
-
您是否要对未为任何 2 个元素定义顺序的项目进行排序?正常排序算法要求比较是可传递的(a
标签: c# .net sorting collections icomparable