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中用于计算指数的exp()方法
May 14 Python
python基础教程之匿名函数lambda
Jan 17 Python
Python 判断 有向图 是否有环的实例讲解
Feb 01 Python
Flask 让jsonify返回的json串支持中文显示的方法
Mar 26 Python
Python类装饰器实现方法详解
Dec 21 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
Jan 15 Python
Python enumerate函数功能与用法示例
Mar 01 Python
如何在Django项目中引入静态文件
Jul 26 Python
Django项目中使用JWT的实现代码
Nov 04 Python
用 Python 制作地球仪的方法
Apr 24 Python
Django生成数据库及添加用户报错解决方案
Oct 09 Python
Python Flask实现进度条
May 11 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
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
php自定义函数截取汉字长度
2014/05/15 PHP
PHP中的use关键字概述
2014/07/23 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
2013/05/30 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
Python中 map()函数的用法详解
2018/07/10 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
python返回数组的索引实例
2019/11/28 Python
python实现贪吃蛇双人大战
2020/04/18 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
儿子婚宴答谢词
2014/01/09 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
装修协议书范本
2014/04/21 职场文书
欢迎领导检查标语
2014/06/27 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
依法行政工作汇报材料
2014/10/28 职场文书
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL