【问题标题】:Errors when using quicksort to sort a double [closed]使用快速排序对双精度进行排序时出错 [关闭]
【发布时间】:2016-07-28 22:37:31
【问题描述】:

我有一个字符串数组,我将它转换为双精度,我将它传递给下面的快速排序算法并得到多个错误,说我不能将双精度转换为整数,尽管有一个双精度数组。 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;

     }

【问题讨论】:

  • 我发布的部分。 8、11、12 15、16、16、17。
  • 这段代码无法编译。
  • 因为这是一个更大的程序的一部分。
  • 不,因为当变量应该是 int 时,它们被键入“double”。这就留下了一个问题,还有什么改变了,并且可能隐藏了真正的错误。一位回答者已经为此浪费了时间。

标签: c# arrays string quicksort


【解决方案1】:

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

arr[i]

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

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

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

【讨论】:

    最近更新 更多