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实现数组插入新元素的方法
May 22 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
解决python opencv无法显示图片的问题
Oct 28 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
python对文件目录的操作方法实例总结
Jun 24 Python
Django 解决新建表删除后无法重新创建等问题
May 21 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
Jun 03 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 Python
python爬虫爬取网页数据并解析数据
Sep 18 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
Mar 01 Python
Python基础之hashlib模块详解
May 06 Python
Python OpenCV 图像平移的实现示例
Jun 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
模仿OSO的论坛(五)
2006/10/09 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
2019/09/29 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
js style动态设置table高度
2014/10/21 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
VueCli3构建TS项目的方法步骤
2018/11/07 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
当当网软件测试笔试题
2015/11/24 面试题
房屋买卖委托公证书
2014/04/08 职场文书
法人代表任命书范本
2014/06/05 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis