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


Posted in Python onMay 12, 2015

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
Python用Pillow(PIL)进行简单的图像操作方法
Jul 07 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
Python设计模式之命令模式简单示例
Jan 10 Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
详解django2中关于时间处理策略
Mar 06 Python
python和c语言的主要区别总结
Jul 07 Python
python机器学习包mlxtend的安装和配置详解
Aug 21 Python
python numpy数组复制使用实例解析
Jan 10 Python
Python本地及虚拟解释器配置过程解析
Oct 13 Python
python爬虫爬取某网站视频的示例代码
Feb 20 Python
python超简单解决约瑟夫环问题
May 12 #Python
python实现复制整个目录的方法
May 12 #Python
Python导出数据到Excel可读取的CSV文件的方法
May 12 #Python
python通过openpyxl生成Excel文件的方法
May 12 #Python
python比较2个xml内容的方法
May 11 #Python
Python二分法搜索算法实例分析
May 11 #Python
python处理图片之PIL模块简单使用方法
May 11 #Python
You might like
解析argc argv在php中的应用
2013/06/24 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
Javascript 中的 &amp;&amp; 和 || 使用小结
2010/04/25 Javascript
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
nodejs二进制与Buffer的介绍与使用
2019/07/11 NodeJs
jquery插件懒加载的示例
2020/10/24 jQuery
python的三目运算符和not in运算符使用示例
2014/03/03 Python
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
详解Python中的正则表达式的用法
2015/04/09 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
浅谈python对象数据的读写权限
2016/09/12 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
python实现可逆简单的加密算法
2019/03/22 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
python判断正负数方式
2020/06/03 Python
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
大学自荐信
2013/12/12 职场文书
食品安全宣传标语
2014/06/07 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
Django基础CBV装饰器和中间件
2022/03/22 Python