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的Django框架中显示对象子集的方法
Jul 21 Python
Python3.6 Schedule模块定时任务(实例讲解)
Nov 09 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
Python之文字转图片方法
May 10 Python
python 实现将字典dict、列表list中的中文正常显示方法
Jul 06 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
Apr 10 Python
python+requests接口自动化框架的实现
Aug 31 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
Oct 09 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
python中复数的共轭复数知识点总结
Dec 06 Python
python语言中pandas字符串分割str.split()函数
Aug 05 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 Cookie的一个使用注意点
2008/11/08 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
PHP实现的激活用户注册验证邮箱功能示例
2017/06/06 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
JavaScript 空位补零实现代码
2010/02/26 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
jQuery中scrollTop()方法用法实例
2015/01/16 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
Angular工具方法学习
2016/12/26 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
Python利用ansible分发处理任务
2015/08/04 Python
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
2018/02/11 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
董事长助理工作职责范本
2014/07/01 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
工程部岗位职责
2015/02/10 职场文书
无罪辩护词范文
2015/05/21 职场文书
初中运动会前导词
2015/07/20 职场文书
党性修养心得体会2016
2016/01/21 职场文书
2019送给家人们的中秋节祝福语
2019/08/15 职场文书
python基础之匿名函数详解
2021/04/21 Python
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫
Python实现文字pdf转换图片pdf效果
2022/04/03 Python