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 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
Python常见排序操作示例【字典、列表、指定元素等】
Aug 15 Python
python读写csv文件实例代码
Jul 05 Python
python读取指定字节长度的文本方法
Aug 27 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
Sep 05 Python
python 字典的打印实现
Sep 26 Python
python提取xml里面的链接源码详解
Oct 15 Python
Python实现子类调用父类的初始化实例
Mar 12 Python
python 一维二维插值实例
Apr 22 Python
分析Python list操作为什么会错误
Nov 17 Python
python解析照片拍摄时间进行图片整理
Jul 23 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 防止单引号,双引号在接受页面转义
2008/07/10 PHP
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
理解Javascript_06_理解对象的创建过程
2010/10/15 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
vue实现全选和反选功能
2017/08/31 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
如何基于Python实现自动扫雷
2020/01/06 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
戴尔英国官网:Dell英国
2017/05/27 全球购物
C# .NET面试题
2015/11/28 面试题
新员工培训个人的自我评价
2013/10/09 职场文书
考博自荐信
2013/10/25 职场文书
求职自荐信格式
2013/12/04 职场文书
大众服装店创业计划书范文
2014/01/01 职场文书
巧克力蛋糕店创业计划书
2014/01/14 职场文书
医生进修自我鉴定
2014/01/19 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
学习张林森心得体会
2014/09/10 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
辩护词格式
2015/05/22 职场文书
小学班级标语口号大全
2015/12/26 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
MYSQL如何查看进程和kill进程
2022/03/13 MySQL