香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

python使用分治法实现求解最大值的方法


时间:2021-12-08 14:45 作者:admin610456


本文实例讲述了python/' target='_blank'>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程序设计有所帮助。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)