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函数中的默认参数
Mar 30 Python
Python使用遗传算法解决最大流问题
Jan 29 Python
详解Python中的动态属性和特性
Apr 07 Python
python中将zip压缩包转为gz.tar的方法
Oct 18 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 Python
python2爬取百度贴吧指定关键字和图片代码实例
Aug 14 Python
Django之模板层的实现代码
Sep 09 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
django和flask哪个值得研究学习
Jul 31 Python
通过代码实例了解Python sys模块
Sep 14 Python
python 实现批量图片识别并翻译
Nov 02 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
jQuery插件 tabBox实现代码
2010/02/09 Javascript
web前端开发也需要日志
2010/12/09 Javascript
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
微信小程序 wx.request方法的异步封装实例详解
2017/05/18 Javascript
Kindeditor单独调用多图上传实例
2017/07/31 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
python实现FTP循环上传文件
2020/03/20 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
一套.net面试题及答案
2016/11/02 面试题
管理心得体会
2013/12/28 职场文书
物流仓储计划书
2014/01/10 职场文书
学校消防演习方案
2014/02/19 职场文书
给医院的感谢信
2015/01/21 职场文书
计划生育责任书
2015/05/09 职场文书
微信小程序scroll-view不能左右滑动问题的解决方法
2021/07/09 Javascript
DSP接收机前端设想
2022/04/05 无线电
Golang获取List列表元素的四种方式
2022/04/20 Golang