在排序算法中使用不同的数组类型

时间:2017-04-22 15:22:51

标签: c# arrays algorithm sorting

作为我的一项任务的一部分,我获得了一组11个文本文件,以演示各种搜索和排序功能。这些文件中的数据包括整数,浮点数和字符串。我使用了两种排序算法来对字符串和整数进行排序,并希望重新使用其中一种来对浮点数进行排序。是否可以调整我的代码以使用float数组作为整数数组的替代?

算法代码:

public static void InsertionSort(int[] intArray){
    int temp, j;
    for (int i = 1; i< intArray.Length; i++){
        temp = intArray[i];
        j = i - 1;

        while(j >=0 && intArray[j] > temp){
            intArray[j+1] = intArray[j]
            j--;
        }
    intArray[j+1] = temp;
    }    
    for (int i = 0; i < intArray.Length; i++){
        Console.WriteLine(intArray[i]);
    }
}

1 个答案:

答案 0 :(得分:0)

您可以将其设为通用方法,以便按类型进行参数化。但是,并非所有类型都以统一的方式进行比较,因此您可以将自己局限于实施IComparable<T>的那些:

    public static void InsertionSort<T>(T[] array)
        where T : IComparable<T>
    {
        T temp;
        int j;

        for (int i = 1; i < array.Length; i++)
        {
            temp = array[i];
            j = i - 1;

            while (j >= 0 && array[j].CompareTo(temp) > 0)
            {
                array[j + 1] = array[j];
                j--;
            }
            array[j + 1] = temp;
        }

        for (int i = 0; i < array.Length; i++)
        {
            Console.WriteLine(array[i]);
        }
    }