同時求一組數的最大值和最小值(Python)

2021-09-12 21:20:04 字數 1373 閱讀 2559

用分治法同時求n個數

a1,a2

,a3,…

,an中的最小值

min(1,n)

和最大值

max(1,n)

的基本思想是: (

1)要求min(1,n)

和max(1,n)

,可以先求得

min(1,n/2)

和min(n/2+1,n)

以及max(1,n/2)

和max(n/2+1,n)

,min(1,n/2)

和min(n/2+1,n)

中較小的就是

min(1,n)

,max(1,n/2)

和max(n/2+1,n)

中較大的就是

max(1,n)

……直到要求

min(1,1)

和max(1,1),

…,min(

n,n)

和max(

n,n)。

(2)由於min(1,1

)=max(1,1)=a1,

…,min(

n,n)=max(

n,n)=an。

(3)通過分別比較

min(1,1)

和min(2,2)

,max(1,1)

和max(2,2)

可以得到

min(1,2)

和max(1,2)

……直至得到

min(n-1,n)

和max(n-1,n)

;同理通過分別比較

min(1,2)

和min(3,4)

,max(1,2)

和max(3,4)

可以得到

min(1,4)

和max(1,4)

……直至得到

min(n-3,n)

和max(n-3,n)

……直至得到

min(1,n)

和max(1,n)

#《程式:最小值和最大值_分治》

a=[3,8,9,4,10,5,1,17]

def smin_max(a):

if len(a)==1:

return(a[0],a[0])

elif len(a)==2:

return(min(a),max(a))

m=len(a)//2

lmin,lmax=smin_max(a[:m])

rmin,rmax=smin_max(a[m:])

return min(lmin,rmin),max(lmax,rmax)

print("minimum and maximum:%d,%d"%(smin_max(a)))

比較一組數的最大值或最小值

public static void main string args int max num 0 認為陣列裡的是乙個數為最大值 int min num 0 認為陣列裡的是乙個數為最小值 for int i 0 i num.length i system.out.println 最大值 max sy...

獲取一組資料的最大值和最小值

例如,對 陣列 arr 1,5,48,99,6,5,22,77,1,4,999,1,2 進行查詢 1.使用math方法 查詢最小值 math.min arr 查詢最大值 math.max arr 2.先排序然後獲取第一位和最後一位 排序 arr.sort a,b a b 獲取最小值 let minv...

Problem E 求最大值和最小值

求出一些整數中的最大值和最小值。輸入為多行,以eof結束。每行為乙個十進位制的數字,全部由0 9組成,每行最長不超過1000個字元。有些數字會以0開頭 不影響數值大小的前導0 輸出為輸入中的最大值和最小值,格式見sample。02010001201223 the maximum value is 2...