网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

关于分治思想处理java代码的信息

用Java采用分治法递归求最大值和最小值,产生死循环

DEBUG了一下才看出来,递归坑人啊。。。

成都创新互联公司10多年成都企业网站定制服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都企业网站定制及推广,对成都三维植被网等多个行业拥有丰富的网站营销经验的网站建设公司。

也建议你用DEBUG跟踪一下。。

首先这里递归了几次

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

mid = (i + j) / 2;

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

当i=0,mid=1的时候,上面几行代码的最后一行执行完成,并输出了最大最小值。

之后这个一行执行完了继续往下执行,造成死循环

即i=2,j=1

java用分治法查找数组元素的最大值和最小值,求大神帮我看看这段代码错在哪

分治那个方法基本都错了:

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 分治法求最小子数组和

这是分治求最大子数组和

首先重要点是:递归,这个是关键,何为递归,就是自己调用自己,比如这个代码中的helper方法,就是递归,该代码运行时,会自己调用自己很多次,数组就会两分,两分再两分,这样就会把大的问题分解成小的问题,最后把小的问题汇集起来得到答案。

你表达不出的东西和没理解的就是这个递归,别小看这个递归,这是本代码的关键点,最重要的部分。

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

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

Copy code

public class Power {

public static void main(String[] args) {

double x = 2.0; // 底数

double n = 10; // 指数

double result = power(x, n);

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

}

// 分治法求幂运算

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

if (n == 0) { // n为0时,直接返回1

return 1;

}

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

if (n % 2 == 0) { // n为偶数时,两半乘起来即可

return half * half;

} else { // n为奇数时,需要多乘一次x

return half * half * x;

}

}

}

首先,在 main() 方法中定义了底数 x 和指数 n。然后调用 power() 方法求 x 的 n 次方,并将结果输出到屏幕上。

power() 方法使用了分治法来实现幂运算。当 n 是0时,直接返回1;否则将 n 分成两半,分别递归求出两半的幂,然后根据 n 是奇数还是偶数来计算结果,最后返回计算结果。

由于每次递归将 n 除以2,因此该算法的时间复杂度为 Θ(lgn)。


当前标题:关于分治思想处理java代码的信息
URL分享:http://bjjierui.cn/article/dopodgo.html

其他资讯