使用quicksort对double进行排序时出错

时间:2016-04-07 20:24:05

标签: c# arrays string quicksort

我有一个字符串数组,我将其转换为double,我将其传递给下面的快速排序算法并获得多个错误,说尽管有一个双数组但我不能将double转换为int。左和右分别为0和arr.Length - 1。

public static double[] quick_Sort(double[] arr, double left, double right)
    {

            double i, j;
            double pivot, temp;
            i = left;
            j = right;
            pivot = arr[(left + right) / 2];
            do
            {
                while ((arr[i] < pivot) && (i < right)) i++;
                while ((pivot < arr[j]) && (j > left)) j--;
                if (i <= j)
                {
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                    i++;
                    j--;
                }
            } while (i <= j);
            if (left < j) quick_Sort(arr, left, j);
            if (i < right) quick_Sort(arr, i, right);

        return arr;

     }

1 个答案:

答案 0 :(得分:1)

问题是您使用double s作为数组索引 - 应该是int s,例如。

arr[i]

您需要为索引使用int值,例如:

int i;
i = Convert.ToInt32(left);

或者只使用int代替double代替所有变量(取决于程序的工作方式)。如果没有更多信息,我不确定什么是最好的。