gpt4 book ai didi

c# - 如何修复我的 C# 快速排序算法中的隐式转换错误?

转载 作者:太空宇宙 更新时间:2023-11-03 20:50:36 24 4
gpt4 key购买 nike

我正在尝试实现一个快速排序算法来对 float 组进行排序。每当我引用数组中的索引时,我都会收到此错误:

Cannot implicitly convert type 'float' to 'int'. An explicit conversion exists (are you missing a cast)?

算法如下:

class Quicksort
{
public static void Sort(float[] numbers, int left, int right)
{
float i = Convert.ToSingle(left);
float j = Convert.ToSingle(right);

var pivot = numbers[(left + right) / 2];

while (i <= j)
{
while (numbers[i] < pivot) //ERROR HERE
i++;

while (numbers[j] > pivot) //ERROR HERE
j--;

if (i <= j)
{
float tmp = numbers[i]; //ERROR HERE
numbers[i] = numbers[j]; //ERROR HERE
numbers[j] = tmp; //ERROR HERE

i++;
j--;
}
}

if (left < j)
Sort(numbers, left, j);

if (i < right)
Sort(numbers, i, right);
}
}

每当我使用 numbers[i]numbers[j] 时都会出现转换错误

我该如何解决这个问题?

谢谢

最佳答案

问题是您正在尝试对数组索引使用浮点值。这行不通:数组索引在 C# 中始终是整数,无论​​数组元素的类型如何。这是有道理的 - 例如,没有“数组的元素 1.3”这样的东西。

只需将方法的前两行更改为:

int i = left;
int j = right;

... 或完全删除 ij,并在整个方法中使用 leftright

关于c# - 如何修复我的 C# 快速排序算法中的隐式转换错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55783697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com