通用BubbleSort扩展

Kub*_*ubi 1 c# generics

    public static T[] BubbleSort<T>(this T[] arr) where T : class
    {
        for (int i = 0; i < arr.Length; i++)
        {
            for (int j = 0; j < arr.Length-1; j++)
            {
                if (arr[j - 1] > arr[j])
                    swap(arr[j - 1], arr[j]);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

如何创建通用冒泡排序扩展方法?有没有办法处理这里的比较?错误1运算符'>'无法应用于'T'和'T'类型的操作数

Chr*_*Wue 10

你可以限制TIComparable<T>这样:

public static void BubbleSort<T>(this T[] arr) where T : IComparable<T>
{
    for (int i = 0; i < arr.Length; i++)
    {
        for (int j = 0; j < arr.Length-1; j++)
        {
            if (arr[j].CompareTo(arr[j + 1]) > 0)
                swap(arr[j], arr[j + 1]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

其优点是T也可以是类型的值int.此外,您的函数不需要在更改this数组时返回数组.