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通过select实现异步IO的方法
Jun 04 Python
python通过文件头判断文件类型
Oct 30 Python
PyQt5每天必学之进度条效果
Apr 19 Python
python实现飞机大战微信小游戏
Mar 21 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
python2.7使用plotly绘制本地散点图和折线图
Apr 02 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
pyqt5 QlistView列表显示的实现示例
Mar 24 Python
python3安装OCR识别库tesserocr过程图解
Apr 02 Python
Python decorator拦截器代码实例解析
Apr 04 Python
弄清Pytorch显存的分配机制
Dec 10 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页面防重复提交方法总结
2013/11/25 PHP
yii添删改查实例
2015/11/16 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
angular中实现li或者某个元素点击变色的两种方法
2017/07/27 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
2017/08/10 jQuery
关于ES6箭头函数中的this问题
2018/02/27 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
python 图片验证码代码分享
2012/07/04 Python
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
python去除文件中重复的行实例
2018/06/29 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
python取均匀不重复的随机数方式
2019/11/27 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
Python内置函数及功能简介汇总
2020/10/13 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
海淘母婴商城:国际妈咪
2016/07/23 全球购物
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
怎样创建、运行java程序
2014/08/01 面试题
教育实习生的自我评价分享
2013/11/21 职场文书
个人查摆剖析材料
2014/02/04 职场文书
宿舍标语大全
2014/06/19 职场文书
献爱心标语
2014/06/21 职场文书
班级出游活动计划书
2014/08/15 职场文书
公司业务员管理制度
2015/08/05 职场文书
Python极值整数的边界探讨分析
2021/09/15 Python
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
Mysql 8.x 创建用户以及授予权限的操作记录
2022/04/18 MySQL