用分治法同時求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...