国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python使用分治法實現求解最大值的方法

2020-02-23 01:10:12
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仁布县| 神木县| 庄河市| 哈巴河县| 奉节县| 临泽县| 金湖县| 兴义市| 类乌齐县| 辽中县| 东宁县| 百色市| 恩平市| 淮滨县| 通化市| 安平县| 长治县| 额尔古纳市| 皮山县| 泌阳县| 剑河县| 宁乡县| 买车| 固安县| 巴马| 金塔县| 辽宁省| 离岛区| 阳春市| 梧州市| 安庆市| 巴青县| 黄浦区| 南召县| 万盛区| 宣城市| 体育| 通州市| 杭锦后旗| 安国市| 邵阳市|