日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分治法:关于选择算法,找最大,找最小,同时找最大和最小,找第二大

發布時間:2024/9/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分治法:关于选择算法,找最大,找最小,同时找最大和最小,找第二大 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

找最大或者最小,蠻力算法為最優的算法,需要比較n-1次

# 這個已經是最優的算法了,比較n-1次 def findMax(arr):max_pivot = arr[0]for i in range(1,len(arr)):if arr[i] > max_pivot:max_pivot = arr[i]return max_pivotdef findMin(arr):min_pivot = arr[0]for i in range(1,len(arr)):if arr[i] < min_pivot:min_pivot = arr[i]return min_pivot

還有一種分治的算法,也是需要比較n-1次,類似于錦標賽,這里比較次數就是淘汰掉的隊伍個數,劃分子問題的方法就是兩兩比較,只留最大,注意奇數的處理(直接晉級下輪)

# 兩兩比較得到最大的一半數組 def partition_max(arr):pointer = 0max_arr =[]while pointer <= len(arr)-2:max_arr += [max(arr[pointer],arr[pointer+1])]pointer +=2# 假如是奇數,加上最后一個數,偶數的話加的為空 max_arr +=arr[pointer:]return max_arr# 找最大分治的寫法,也是最優的為比較n-1次 def findmax_recursive(arr):if len(arr) == 1:return arr[0]max_arr = partition_max(arr)return findmax_recursive(max_arr)

同時找最大和找最小,蠻力算法,找最大n-1,找最小n-2,合計2n-3

使用分組的方式比較次數:3/2 *n -2

# 找最大和最小,得到最大一半分組和最小的一半分組 def partition_max_min(arr):pointer = 0max_arr =[]min_arr =[]while pointer <= len(arr)-2:if arr[pointer] >=arr[pointer+1]:max_arr.append(arr[pointer])min_arr.append(arr[pointer+1])else:max_arr.append(arr[pointer+1])min_arr.append(arr[pointer])pointer +=2max_arr +=arr[pointer:]min_arr +=arr[pointer:]return max_arr,min_arr# 這個也是最優的算法了 def findMaxMin(arr):max_arr,min_arr = partition_max_min(arr)min = findMin(min_arr)max = findMax(max_arr)return max,min

找第二大,蠻力算法也是2n-3,采取錦標賽的方式冠軍比較n-1次,亞軍在冠軍的手下敗將里產生比較logn-1次,這里需要備忘冠軍的手下敗將,但是一開始冠軍不知道,所以每個選手需要記錄他曾經打敗過的選手

#%% class node:def __init__(self,value=None,miss=None):self.value = valueself.miss =missdef partition_max_with_nodes(arr):pointer = 0max_arr =[]while pointer <= len(arr)-2:if arr[pointer].value >=arr[pointer+1].value:arr[pointer].miss.append(arr[pointer+1].value)max_arr.append(arr[pointer])else:arr[pointer+1].miss.append(arr[pointer].value)max_arr.append(arr[pointer+1])pointer +=2# 假如是奇數,加上最后一個數,偶數的話加的為空 max_arr +=arr[pointer:]return max_arrdef findMaxSecondmax(arr):arr_node =[]for i in range(len(arr)):arr_node.append(node(arr[i],[]))def findmax_recursive(arr):if len(arr) == 1:return arr[0]max_arr = partition_max_with_nodes(arr)return findmax_recursive(max_arr)pair = findmax_recursive(arr_node)first_max = pair.valuesecond_max_arr = pair.misssecond_max = findMax(second_max_arr)return first_max,second_maxarr = [4,44,5,77,8,32,18,99,377,55,33,11,12,999,678] print(arr) ##print(findMax(arr)) ##print(partition_max(arr)) ##print(findmax_recursive(arr)) #print(partition_max_min(arr)) #print(findMaxMin(arr)) print(findMaxSecondmax(arr))[4, 44, 5, 77, 8, 32, 18, 99, 377, 55, 33, 11, 12, 999, 678] (999, 678)

對于一般情況下次再研究

總結

以上是生活随笔為你收集整理的分治法:关于选择算法,找最大,找最小,同时找最大和最小,找第二大的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 五月婷婷国产 | 日本激情一区二区三区 | 日本精品在线视频 | 亚洲一区二区三区午夜 | 激情五月开心婷婷 | 黄黄视频在线观看 | 蜜桃视频欧美 | 国产精品三级视频 | 国产在线视频卡一卡二 | 国产性猛交普通话对白 | 久久精品国产一区二区电影 | 香蕉视频免费在线观看 | 福利第一页| 狠狠干b | 成人福利一区 | 久久香蕉精品 | 色婷婷导航| 四虎视频国产精品免费入口 | 亚洲AV无码精品黑人黑人 | 久久先锋| 蜜臀精品| 日韩极品一区 | 国产欧美专区 | 久久综合免费视频 | 日韩国产综合 | 91亚洲成人 | 日本三级吃奶头添泬 | 女人又爽又黄免费女仆 | 天天碰天天摸 | 91网址在线观看 | 正在播放老肥熟妇露脸 | 久久国产香蕉 | 卡一卡二在线视频 | 精品www| 女人叫床很黄很污句子 | 国产美女福利在线 | 日韩av在线一区二区三区 | 亚洲a∨无码无在线观看 | 巨乳美女动漫 | 射一射 | 中出视频在线观看 | 91av手机在线 | 日p免费视频 | 麻豆视频在线免费看 | 吃奶av| 日本一区中文字幕 | 水蜜桃av在线 | ,午夜性刺激免费看视频 | 456亚洲影院 | 国产色诱视频 | 青青五月天 | 日韩视频久久 | 国产精品毛片在线 | 男女av网站 | 精品欧美日韩 | av黄色av| 性欧美ⅴideo另类hd | 看久久 | 国产精品一区二区免费视频 | 欧美波霸影院 | av久久久久久| 日日噜噜噜夜夜爽爽狠狠视频97 | 欧美久久久久久久久久 | 999精品在线视频 | 青青草视频免费播放 | 国产美女作爱视频 | 国产一级美女 | 欧美日韩一级在线观看 | 亚洲精品欧美在线 | 天天噜日日噜 | 国产波霸爆乳一区二区 | 国产精品美女在线 | 狼人伊人av | 精品人妻无码一区二区性色 | 亚洲美女视频 | free性欧美69巨大 | 天天色综合av | 久久亚洲精品视频 | 伊人黄色网 | 欧美激情欧美激情在线五月 | 欧美呦交| 玉米地疯狂的吸允她的奶视频 | 一区在线观看视频 | 国产精品自产拍高潮在线观看 | 日韩网站免费 | 99九九精品视频 | 无码人妻h动漫 | 未满十八岁勿进 | 最好看的2018中文2019 | 欧美日韩亚洲国产另类 | 97视频久久久 | 欧美三级一级片 | 亚洲视频网 | 91麻豆视频在线观看 | 欧美另类xxxx | 在线观看岛国av | 亚洲成人免费在线 | 日产mv免费观看 | 美女的诞生免费观看在线高清 |