分治算法javascript实现

本文介绍了如何运用分治算法来解决寻找整型数组最大值和最小值的问题。传统方法是遍历数组,时间复杂度为O(n),而分治算法通过将问题分解为更小的子问题,最终合并子问题的解来得到答案。文中给出了分治算法在本题中的实现代码。
摘要由CSDN通过智能技术生成

举个简单的分治算法场景:求指定整型数组的最大值和最小值。

传统做法就是遍历一遍下来求出最大值和最小值,时间复杂度是O(n)。

下面说下用分治怎么实现。

1、为什么选择分治算法?

因为本题具有以下属性

(1)、当该问题缩小到一定规模的时候,比如,该数组只有两个元素,这个时候,这个问题就很好解决。

(2)、该问题可以分解为若干规模较小的相同问题。

(3)、分解的问题的答案可以合并为该问题的解。

2、本题如何用分治算法实现?

直接上代码:

function divide_conquer(arr,from,to){
	if(to - from == 1){
          return {"max":Math.max(arr[from],arr[to]),"min":Math.min(arr[from],arr[to])}
	}else if(to - from == 0){
	   return {"max":arr[from],"min":arr[to]}
	}else{
          var middle = parseInt(from+(to-from)/2);
          var result1 = divide_conquer(arr,from,middle);
          var result2 = divide_conquer(arr,middle+1,to);
          var result = {};
          if(result1["max"] > result2["max"]){
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值