使用快速排序对双精度进行排序时出错



我有一个字符串数组,我将其转换为double,我将它传递到下面的快速排序算法中,并得到多个错误,表示尽管有double数组,但我无法将double转换为int。Left和right分别为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;
     }

问题是您的数组索引使用的是doubles,应该是ints,例如

arr[i]

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

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

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

最新更新