0
public static void sort(IComparable[] a)
{
    int N = a.Length;
    for (int i = 0; i < N; i++)
    {
        for (int j = i; j > 0 && less(a[j], a[j - 1]); j--)
        {
           exch(a, j, j - 1);
        }
        isSorted(a, 0, i);
    }
    isSorted(a);
}

以上是我在书中找到的简单排序代码,代码是用java编写的,我尝试用c#翻译它。一切都很好,除了如何传递参数。Int32 是实现的icamparable,但是我如何创建一个实例IComparable[]并传递给排序函数。

IComparable[] b = new int[] { 2, 3, 3, 3, 3, 3, 3, 3 };

不工作。

4

1 回答 1

5

如果要IComparable使用数组进行初始化,则int需要创建副本。最简单的代码编写是使用 LINQ 的CastToArray

 IComparable[] b = (new int[] { 2, 3, 3, 3, 3, 3, 3, 3 })
     .Cast<IComparable>().ToArray();

注意:通常你会使用泛型来编写这个方法——比如

 public static void Sort<T>(T[] a) where T: IComparable<T>
于 2013-07-19T05:26:38.063 回答