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判断变量是否已经定义的方法
Aug 18 Python
一个Python最简单的接口自动化框架
Jan 02 Python
Python 实现异步调用函数的示例讲解
Oct 14 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
python函数与方法的区别总结
Jun 23 Python
python 使用pdfminer3k 读取PDF文档的例子
Aug 27 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
Sep 25 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
python中对_init_的理解及实例解析
Oct 11 Python
Python标准库itertools的使用方法
Jan 17 Python
python爬虫利用代理池更换IP的方法步骤
Feb 21 Python
基于PyInstaller各参数的含义说明
Mar 04 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
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
PHP 的比较运算与逻辑运算详解
2016/05/12 PHP
Jquery对数组的操作技巧整理
2014/03/25 Javascript
JS的数组迭代方法
2015/02/05 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
2016/09/05 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
vue倒计时刷新页面不会从头开始的解决方法
2020/03/03 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
wxPython窗口的继承机制实例分析
2014/09/28 Python
解决Python传递中文参数的问题
2015/08/04 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
在python里面运用多继承方法详解
2019/07/01 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
工商管理毕业生推荐信
2013/12/24 职场文书
中文专业毕业生自荐书范文
2014/01/04 职场文书
生日宴会答谢词
2014/01/09 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
优秀教师演讲稿
2014/05/06 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
教务处教学工作总结
2015/08/10 职场文书
高二化学教学反思
2016/02/22 职场文书
学生安全责任协议书
2016/03/22 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
试了下Golang实现try catch的方法
2021/07/01 Golang
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python