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

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

合并排序和遞歸混淆/代碼不起作用

合并排序和遞歸混淆/代碼不起作用

有只小跳蛙 2021-08-04 17:08:30
我已經(jīng)在這里呆了幾天,閱讀了許多偽代碼并觀看了解釋遞歸和歸并排序的視頻。我理解歸并排序并且有點(diǎn)理解遞歸——除非它適用于我下面的代碼中的數(shù)組。我進(jìn)行了一些調(diào)試,無(wú)論出現(xiàn)越界錯(cuò)誤,我的程序似乎都沒(méi)有正確排序。我很迷茫,很感激你能提供的任何幫助!問(wèn)題:1) 數(shù)組上的遞歸是什么意思?它是否創(chuàng)建了一個(gè)由原始數(shù)組保存的子數(shù)組?——如果有道理的話。2)為什么我的代碼會(huì)遇到越界錯(cuò)誤,即使我按照教程學(xué)習(xí)了 t 并且在每次通過(guò)后都設(shè)置了 k 值。具體是遇到了這個(gè)問(wèn)題。這是代碼:public class Merge {    public static void main(String[] args) {    }    static void mergeSort(int arr[]){        int r = arr.length - 1;        Merge.sort(arr,0,r);        System.out.println(arr);    }    static void sort(int arr[], int p, int r){        if(p<r){            int q = (p+r)/2;            sort(arr,p,q);            sort(arr,q+1,r);            merge(arr,p,q,r);        }    }    static void merge(int arr[], int p, int q, int r){        int n1 = q-p+1;        int n2 = r-q;        int L[] = new int[n1];        int R[] = new int[n2];        for(int i = 0; i< n1; i++){            L[i] = arr[i];        }        for(int j = 0; j< n2; j++){            R[j] = arr[q+1+j];        }        int i = 0, j = 0;        int k = 1;        while(i<n1 && j<n2){            if(L[i]<= R[j]){                arr[k] = L[i];                i++;            }            else{                arr[k] = R[j];                j++;            }            k++;        }        while(i<n1){            arr[k] = L[i];            i++;            k++;        }Error occurs here --> while(j<n2){            arr[k] = R[j];            k++;        }    }}感謝您的幫助!編輯:只是想說(shuō)我對(duì)這篇文章的精彩回復(fù)有多棒,非常感謝您的時(shí)間。
查看完整描述

2 回答

?
皈依舞

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

讓我們稍微分解一下您的問(wèn)題 - 具體來(lái)說(shuō),遞歸是什么意思?你可以把它想象成一個(gè)循環(huán)——它對(duì)自己執(zhí)行一個(gè)操作,直到它達(dá)到停止條件。以for循環(huán)為例


for(int i = 0; i < 2; i++)

將執(zhí)行操作,直到達(dá)到變量 i 不再小于 2 的情況。同樣,遞歸地


void methodLoop(int input){

    int i = input;

    if(i < 2){

       methodLoop(i+1);

    }

    else{

      System.out.println("Base case reached! I is no longer less than 2!");

  }

}

執(zhí)行類似的操作,只是用遞歸代替!


這對(duì)數(shù)組意味著什么?這取決于。您在問(wèn)題中提到的是一個(gè)稱為多維數(shù)組的概念 - 數(shù)組中的數(shù)組。這些像普通數(shù)組一樣工作,它只是一個(gè)在每個(gè)索引中包含另一個(gè)數(shù)組的數(shù)組 - 這些實(shí)例化如下


String[][] multidimensionalarray = new array[4][4]

為了形象化這樣的概念,將其視為坐標(biāo)網(wǎng)格可能更容易,索引是坐標(biāo)位置,該索引處的值包含有關(guān)該位置的信息。例如,假設(shè)多維數(shù)組已經(jīng)填充了這樣的數(shù)據(jù),它可能看起來(lái)像:


4 a b c d

3 e f g h

2 i j k l

1 m n o p

  1 2 3 4

然后 multidimensionarray[2][3] 的值將返回字符串 k!



查看完整回答
反對(duì) 回復(fù) 2021-08-04
  • 2 回答
  • 0 關(guān)注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報(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)