国产探花免费观看_亚洲丰满少妇自慰呻吟_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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇文区| 明溪县| 尼木县| 乌拉特中旗| 乐至县| 宁远县| 方城县| 阿城市| 天祝| 惠州市| 德昌县| 贡嘎县| 应用必备| 南漳县| 文化| 大丰市| 镇原县| 永州市| 晋城| 江城| 华容县| 宾阳县| 新晃| 高邮市| 宁国市| 广汉市| 江达县| 广南县| 乡城县| 那坡县| 巩义市| 宁海县| 商河县| 保定市| 天柱县| 贞丰县| 伊金霍洛旗| 达日县| 岢岚县| 乐东| 靖西县|