为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕工程0101907 2022-12-24 10:54:13
我正在尝试实现一种快速排序算法来对浮点数组进行排序。每当我引用数组中的索引时,我都会收到此错误:无法将类型“float”隐式转换为“int”。存在显式转换(您是否缺少转换)?这是算法: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]我将如何解决这个问题?
查看完整描述

2 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

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

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

int i = left;
int j = right;

...或完全删除iand并在整个方法中j使用leftand 。right


查看完整回答
反对 回复 2022-12-24
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

问题是 i 和 j 是索引器,必须定义为 int 类型。

int i = left;
int j = right;


查看完整回答
反对 回复 2022-12-24
  • 2 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号