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基于动态规划算法计算单词距离
Jul 25 Python
python版简单工厂模式
Oct 16 Python
python中map的基本用法示例
Sep 10 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
python文本数据处理学习笔记详解
Jun 17 Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 Python
Django 创建/删除用户的示例代码
Jul 24 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
Python列表嵌套常见坑点及解决方案
Sep 30 Python
numba提升python运行速度的实例方法
Jan 25 Python
Python实现制作销售数据可视化看板详解
Nov 27 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/08/27 PHP
php array_filter除去数组中的空字符元素
2020/06/21 PHP
将string解析为json的几种方式小结
2010/11/11 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python中使用中文的方法
2011/02/19 Python
python django集成cas验证系统
2014/07/14 Python
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
python3实现表白神器
2019/04/09 Python
python修改FTP服务器上的文件名
2019/09/11 Python
Python实现图片添加文字
2019/11/26 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
New delete 与malloc free 的联系与区别
2013/02/04 面试题
Linux如何压缩可执行文件
2014/03/27 面试题
七一建党节演讲稿
2014/09/11 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
班级管理经验交流材料
2015/11/02 职场文书
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS