關(guān)于分治思想處理java代碼的信息

用Java采用分治法遞歸求最大值和最小值,產(chǎn)生死循環(huán)

DEBUG了一下才看出來,遞歸坑人啊。。。

成都創(chuàng)新互聯(lián)公司10多年成都企業(yè)網(wǎng)站定制服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及高端網(wǎng)站定制服務(wù),成都企業(yè)網(wǎng)站定制及推廣,對成都三維植被網(wǎng)等多個(gè)行業(yè)擁有豐富的網(wǎng)站營銷經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。

也建議你用DEBUG跟蹤一下。。

首先這里遞歸了幾次

float rmax = 0, rmin = 0, bmax = 0, bmin = 0;

mid = (i + j) / 2;

maxMin(i, mid, a, rmax, rmin);

當(dāng)i=0,mid=1的時(shí)候,上面幾行代碼的最后一行執(zhí)行完成,并輸出了最大最小值。

之后這個(gè)一行執(zhí)行完了繼續(xù)往下執(zhí)行,造成死循環(huán)

即i=2,j=1

java用分治法查找數(shù)組元素的最大值和最小值,求大神幫我看看這段代碼錯(cuò)在哪

分治那個(gè)方法基本都錯(cuò)了:

import?java.util.*;

public?class?Maxmin?{

public?int?max=0;

public?int?min=Integer.MAX_VALUE;

public?int?Min(int?a,?int?b){

if(a=b)

return?a;

else

return?b;

}

public??int?Max(int?a,?int?b){

if(a=b)

return?a;

else?

return?b;

}

public??void?min_max(int?a[]){

if?(a.length?==?1)?{

max?=?Max(max,?a[0]);

min?=?Min(min,?a[0]);

}?else?{

int?m[]?=?new?int[a.length?/?2];

int?n[]?=?new?int[a.length?-?a.length?/?2];

System.arraycopy(a,?0,?m,?0,?m.length);

System.arraycopy(a,?m.length,?n,?0,?n.length);

min_max(m);

min_max(n);

}

}

public?static?void?main(String?[]args){

Maxmin?object=?new?Maxmin();

int[]?array?=?new?int[100];

for(int?i=0;?iarray.length;?i++)

{

array[i]=(int)?(Math.random()*100+1);

System.out.print(array[i]+"?");

}

object.min_max(array);

System.out.println("最大值是:"+object.max);

System.out.println("最小值是:"+object.min);

}

}

請教 java 分治法求最小子數(shù)組和

這是分治求最大子數(shù)組和

首先重要點(diǎn)是:遞歸,這個(gè)是關(guān)鍵,何為遞歸,就是自己調(diào)用自己,比如這個(gè)代碼中的helper方法,就是遞歸,該代碼運(yùn)行時(shí),會(huì)自己調(diào)用自己很多次,數(shù)組就會(huì)兩分,兩分再兩分,這樣就會(huì)把大的問題分解成小的問題,最后把小的問題匯集起來得到答案。

你表達(dá)不出的東西和沒理解的就是這個(gè)遞歸,別小看這個(gè)遞歸,這是本代碼的關(guān)鍵點(diǎn),最重要的部分。

分治法求x的n次方的JAVA程序

以下是使用分治法求x的n次方的Java程序:

?Copy code

public class Power {

public static void main(String[] args) {

double x = 2.0; // 底數(shù)

double n = 10; // 指數(shù)

double result = power(x, n);

System.out.println(x + " 的 " + n + " 次方為:" + result);

}

// 分治法求冪運(yùn)算

public static double power(double x, double n) {

if (n == 0) { // n為0時(shí),直接返回1

return 1;

}

double half = power(x, n / 2);

if (n % 2 == 0) { // n為偶數(shù)時(shí),兩半乘起來即可

return half * half;

} else { // n為奇數(shù)時(shí),需要多乘一次x

return half * half * x;

}

}

}

首先,在 main() 方法中定義了底數(shù) x 和指數(shù) n。然后調(diào)用 power() 方法求 x 的 n 次方,并將結(jié)果輸出到屏幕上。

power() 方法使用了分治法來實(shí)現(xiàn)冪運(yùn)算。當(dāng) n 是0時(shí),直接返回1;否則將 n 分成兩半,分別遞歸求出兩半的冪,然后根據(jù) n 是奇數(shù)還是偶數(shù)來計(jì)算結(jié)果,最后返回計(jì)算結(jié)果。

由于每次遞歸將 n 除以2,因此該算法的時(shí)間復(fù)雜度為 Θ(lgn)。

網(wǎng)站標(biāo)題:關(guān)于分治思想處理java代碼的信息
文章路徑:http://www.muchs.cn/article10/dopodgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站建設(shè)移動(dòng)網(wǎng)站建設(shè)、定制網(wǎng)站、商城網(wǎng)站手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營