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 urlopen 使用小示例
Sep 06 Python
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
简介Python设计模式中的代理模式与模板方法模式编程
Feb 02 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
python获取当前文件路径以及父文件路径的方法
Jul 10 Python
python 的 scapy库,实现网卡收发包的例子
Jul 23 Python
python实现DEM数据的阴影生成的方法
Jul 23 Python
Python 硬币兑换问题
Jul 29 Python
python实现批量处理将图片粘贴到另一张图片上并保存
Dec 12 Python
python重要函数eval多种用法解析
Jan 14 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 Python
Python基础之Socket通信原理
Apr 22 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
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
php+ajax 文件上传代码实例
2019/03/18 PHP
JS 常用校验函数
2009/03/26 Javascript
javascript 获取页面的高度及滚动条的位置的代码
2010/05/06 Javascript
jQuery代码优化之基本事件
2011/11/01 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
python将回车作为输入内容的实例
2018/06/23 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
python基于SMTP协议发送邮件
2019/05/31 Python
Python读取实时数据流示例
2019/12/02 Python
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
Java的类与C++的类有什么不同
2014/01/18 面试题
庆六一文艺汇演活动方案
2014/08/26 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
遗失证明范文
2015/06/19 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL