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是编译运行的验证方法
Jan 30 Python
Python中的日期时间处理详解
Nov 17 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
python实现报表自动化详解
Nov 16 Python
Python基于dom操作xml数据的方法示例
May 12 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
Python:Numpy 求平均向量的实例
Jun 29 Python
python取均匀不重复的随机数方式
Nov 27 Python
Python 解码Base64 得到码流格式文本实例
Jan 09 Python
Python OpenCV读取显示视频的方法示例
Feb 20 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
May 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 session处理的定制
2009/03/16 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
javaScript数组迭代方法详解
2016/04/14 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
node中的session的具体使用
2018/09/14 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
C#中的验证控件有几种
2014/03/08 面试题
暑期社会实践方案
2014/02/05 职场文书
简单租房协议书
2014/04/09 职场文书
高中教师考核方案
2014/05/18 职场文书
事业单位年度考核评语
2014/12/31 职场文书
大学军训决心书
2015/02/05 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python