日期:2014-05-18  浏览次数:20693 次

C# Generics 进行直接插入排序
class MySort<T>
  {
  public void InsertSort(T []a)
  {
  T t;
  int j;
  for (int i = 1; i < a.Length; i++)
  {
  t = a[i];
  for (j = i; j > 0 && a[j - 1] > t; j--)
  a[j] = a[j - 1];
  a[j] = t;
  }
  }
  }

a[j-1]>t编译说运算符>无法运用于“T”,请问该如何解决

------解决方案--------------------
C# code

    class MySort<T> where T : IComparable                                     //<---
    {
        public void InsertSort(T[] a)
        {
            T t;
            int j;
            for (int i = 1; i < a.Length; i++)
            {
                t = a[i];
                for (j = i; j > 0 && a[j - 1].CompareTo(t) > 0; j--)           //<---
                    a[j] = a[j - 1];
                a[j] = t;
            }
        }
    }