我有一个字符串数组,我将其转换为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;
}
答案 0 :(得分:1)
问题是您使用double
s作为数组索引 - 应该是int
s,例如。
arr[i]
您需要为索引使用int
值,例如:
int i;
i = Convert.ToInt32(left);
或者只使用int
代替double
代替所有变量(取决于程序的工作方式)。如果没有更多信息,我不确定什么是最好的。