亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何修復我的 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 關注
  • 87 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號