第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

自上而下的遞歸方法不起作用,不知道如何修復(fù)它

自上而下的遞歸方法不起作用,不知道如何修復(fù)它

Helenr 2023-12-21 10:49:57
我的“數(shù)據(jù)結(jié)構(gòu)與算法課”有一個(gè)家庭作業(yè)問(wèn)題 - 用 Java 實(shí)現(xiàn)自上而下的遞歸合并排序。通過(guò)生成 100 個(gè)數(shù)字的隨機(jī)序列,以原始未排序形式打印它們,對(duì)它們進(jìn)行排序,然后按排序順序打印出來(lái),來(lái)證明您的排序是有效的。我做了一些編碼,似乎是正確的,但我收到了一個(gè)錯(cuò)誤,并且無(wú)法弄清楚我做錯(cuò)了什么。class RecursiveMergeSort{void TopDownMergeSort(int[] mainArray, int[] copyArray) // mainArray, copyArray, int n{    CopyArray(mainArray, copyArray);    Split(copyArray, 0, 100, mainArray);}private void Split(int[] copyArray, int start, int end, int[] mainArray){    if(end - start < 2)    {        return;    }    int middle = (end + start) / 2;    Split(mainArray, start, middle, copyArray);    Split(mainArray, start, end, copyArray);    CombineArray(copyArray, start, middle, end, mainArray);}private void CombineArray(int[] mainArray, int start, int middle, int end, int[] copyArray){    int s = start; //a    int m = middle; //b    for (int i = start; i < end; i++)    {        if(s < middle && (m >= end || mainArray[s] <= mainArray[m]))        {            copyArray[i] = mainArray[s];            s = s + 1;        }        else        {            copyArray[i] = mainArray [m];                    m = m + 1;        }    }}private void CopyArray(int[] mainArray, int[] copyArray){    System.arraycopy(mainArray, 0, copyArray, 0, 100);}void UnsortedArray(int[] unsortedArray){    for(int i = 0; i < unsortedArray.length; i++)    {        int random = (int)Math.floor(Math.random() * 100) + 1;        unsortedArray[i] = random;        System.out.println("\t" + i + unsortedArray[i]);    }}void SortedArray(int[] unsortedArray){    for(int i = 0; i < unsortedArray.length; i++)    {        System.out.println("\t: " + i + unsortedArray[i]);    }}}
查看完整描述

1 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

  int middle = (end + start) / 2;

    Split(mainArray, start, middle, copyArray);

    Split(mainArray, start, end, copyArray);

    CombineArray(copyArray, start, middle, end, mainArray);

應(yīng)該


    int middle = (end + start) / 2;

    Split(mainArray, start, middle, copyArray);

    Split(mainArray, middle, end, copyArray);

    CombineArray(copyArray, start, middle, end, mainArray);

你非常接近,只是第二個(gè)遞歸調(diào)用的開(kāi)始索引應(yīng)該是從中間索引到結(jié)束,而不是再次開(kāi)始一直到結(jié)束(導(dǎo)致堆棧溢出錯(cuò)誤)


附帶說(shuō)明 - 您應(yīng)該重命名您的方法以符合標(biāo)準(zhǔn),例如:它們以小寫(xiě)字母開(kāi)頭,例如:


private void combineArray(int[] mainArray, int start, int middle, int end, int[] copyArray)



查看完整回答
反對(duì) 回復(fù) 2023-12-21
  • 1 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)