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定时执行指定函数的方法
May 27 Python
解析Python中的生成器及其与迭代器的差异
Jun 20 Python
Python随机读取文件实现实例
May 25 Python
python docx 中文字体设置的操作方法
May 08 Python
python基于itchat模块实现微信防撤回
Apr 29 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
PyQt5显示GIF图片的方法
Jun 17 Python
Python Django 添加首页尾页上一页下一页代码实例
Aug 21 Python
python重要函数eval多种用法解析
Jan 14 Python
python爬虫容易学吗
Jun 02 Python
Python扫描端口的实现
Jan 25 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
Jan 29 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守护进程 加linux命令nohup实现任务每秒执行一次
2011/07/04 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
类似框架的js代码
2006/11/09 Javascript
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
如何用OpenCV -python3实现视频物体追踪
2019/12/04 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
Python中如何添加自定义模块
2020/06/09 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
2020/09/23 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
基层党建工作汇报材料
2014/08/15 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
单位委托书
2014/10/15 职场文书
环卫工作个人总结
2015/03/04 职场文书
研究生给导师的自荐信
2015/03/06 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏