9赞
7330
当前位置:  开发笔记 > 编程语言 > 正文

python使用分治法实现求解最大值的方法

这篇文章主要介绍了python使用分治法实现求解最大值的方法,较为详细的分析了分治法的原理与实现求最大值的方法,需要的朋友可以参考下
本文实例讲述了python使用分治法实现求解最大值的方法。分享给大家供大家参考。具体分析如下:

题目:

给定一个顺序表,编写一个求出其最大值和最小值的分治算法。

分析:

由于顺序表的结构没有给出,作为演示分治法这里从简顺序表取一整形数组数组大小由用户定义,数据随机生成。我们知道如果数组大小为 1 则可以直接给出结果,如果大小为 2则一次比较即可得出结果,于是我们找到求解该问题的子问题即: 数组大小 <= 2。到此我们就可以进行分治运算了,只要求解的问题数组长度比 2 大就继续分治,否则求解子问题的解并更新全局解以下是代码。

题目看懂了就好说了,关键是要把顺序表分解成为k个元素为2的列表,然后找列表的最大值,然后把子问题的列表进行合并,再递归求解。

上代码吧:

#-*- coding:utf-8 -*-
#分治法求解最大值问题
import random
#求解两个元素的列表的最大值方法
def max_value(max_list):
  return max(max_list)
#定义求解的递归方法
def solve(init_list):
  if len(init_list) <= 2:
  #若列表元素个数小于等于2,则输出结果
    print max_value(init_list)
  else:
    init_list=[init_list[i:i+2] for i in range(0,len(init_list),2)]
    #将列表分解为列表长度除以2个列表
    max_init_list = []
    #用于合并求最大值的列表
    for _list in init_list:
    #将各各个子问题的求解列表合并
      max_init_list.append(max_value(_list))
    solve(max_init_list)
if __name__ == "__main__":
  test_list = [12,2,23,45,67,3,2,4,45,63,24,23]
  #测试列表
  solve(test_list)

希望本文所述对大家的Python程序设计有所帮助。

推荐阅读
  • 为什么需要websocket?传统的实时交互的游戏,或服务器主动发送消息的行为(如推送服务),如果想做在微信上,可能你会使用轮询的方式进行,不过这太消耗资源,大量的请 ... [详细]
  • 适合,它从搭建环境开始介绍。Python入门佳作,经典教程的全新修订,10个项目引人入胜。本书内容涉及的范围较广,既能为初学者夯实基础,又能帮助程序员提升技能,适合各个层次的开发人员阅读参考。 ... [详细]
  • Python主要有以下三大主要应用:Web开发。数据科学:包括机器学习、数据分析和数据可视化。脚本。 ... [详细]
  • Python简单易学框架丰富,所以自学python能做Web应用和Internet开发、网络爬虫、AI人工智能与机器学习以及数据分析。 ... [详细]
  • 你是否会和我一样,对加密数字货币底层的区块链技术非常感兴趣,特别想了解他们的运行机制。但是学习区块链技术并非一帆风顺,我看多了大量的视频教程还有各种课程,最终的感觉就是真正可用的实战课程太少。 ... [详细]
  • Pandas和Numpy大家都不陌生了,代码运行后数据都加载到RAM中,如果数据集特别大,我们就会看到内存飙升。但有时要处理的数据并不适合RAM,这时候Dask来了。 ... [详细]
  • 导入必要通用模块importpandasaspdimportmatplotlib.pyplotaspltimportosimportnumpyasnpimportcopyimportreimportmath一机器学习通用框架:以knn为例#利用邻近点方式训练数据不太适用于高维数据fromsklearn.model_selectionimporttrain_test_split#将数据分为测试集和训练集fromsklearn.neighborsi ... [详细]
  • 在python里,可能大家已从运算表里找到了,即(“+”),但是与PHP不同的是两个对象相加,两个对象必须是同类型的,不同类型的两个对象是不能相加的.要实现像上面PHP代码里的运算,必须保证两对象类型一致。 ... [详细]
  • 这篇文章主要介绍了Python的加密模块md5、sha、crypt使用实例,本文给出了MD5和crypt模块的代码实例,需要的朋友可以参考下 ... [详细]
  • 深入理解Python 代码优化详解
    本文初步探讨了python常见的性能优化技巧以及如何借助工具来定位和分析程序的性能瓶颈,并提供了相关可以进行性能优化的工具或语言,希望能够更相关人员一些参考。 ... [详细]
devbox
jueduiliu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有 京ICP备19059560号-4