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

作者:BlackImpl 时间:2021-07-14 12:06:09 

本文实例讲述了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,分治法,最大值
0
投稿

猜你喜欢

  • 详解如何使用Python网络爬虫获取招聘信息

    2021-09-28 06:58:17
  • Python利用memory_profiler实现内存分析

    2022-10-02 12:41:45
  • Pytorch可视化之Visdom使用实例

    2021-01-05 12:16:13
  • Python中pass的作用与使用教程

    2023-05-05 23:05:05
  • 基于Python实现原创程序猿乘风破浪小游戏

    2021-03-09 01:41:51
  • Python 文件操作实现代码

    2023-07-12 08:30:59
  • python编程使用协程并发的优缺点

    2023-07-20 12:11:45
  • MySQL中进行跨库查询的方法示例

    2024-01-26 10:27:39
  • MySQL启用慢查询日志记录方法

    2024-01-25 11:42:16
  • 在vue项目中使用axios发送post请求出现400错误的解决

    2024-04-27 16:03:12
  • Vue实现兄弟组件间的联动效果

    2024-05-10 14:19:32
  • 只有mdf文件的数据库附加失败的修复方法分享(置疑、只读)

    2012-02-12 15:55:17
  • Innodb表select查询顺序

    2024-01-16 03:32:40
  • 原生JS实现九宫格抽奖效果

    2024-04-17 10:33:38
  • 基于原生JavaScript实现SPA单页应用

    2024-04-30 09:59:43
  • Python版的文曲星猜数字游戏代码

    2023-08-12 16:39:19
  • MySQL乱码问题深层分析

    2009-03-09 14:53:00
  • Vue中axios的封装(报错、鉴权、跳转、拦截、提示)

    2024-05-02 17:06:03
  • pandas基础 Series与Dataframe与numpy对二进制文件输入输出

    2023-10-18 08:20:13
  • SQLServer 存储过程简介与使用方法

    2009-07-07 14:06:00
  • asp之家 网络编程 m.aspxhome.com