// 2.10 尋找陣列中的最大值與最小值
class test;
print(arr);
findmaxmin(arr);
} public static void print(int arr)
// 時間複雜度$o(n)$,但是經過了2n次的比較,本題的目的是儘量減少比較次數
public static void findmaxmin(int arr)
system.out.println("max value: "+arr[maxindex]);
system.out.println("min value: "+arr[minindex]);
} /**
一般情況下,最大的數和最小的數不會是同乙個數。我們先把資料分成兩個部分,再從這兩部分中分別找出最大的數與最小的數
第一輪排序經過了0.5n次比較
在偶數字置找到最大的值經過了0.5n次比較
在奇數字置找到最小的值經過了0.5n次比較
總共的比較次數0.5n+0.5n+0.5n = 1.5n
*/ public static void findmaxmin2(int arr)
// 從偶數字找最大的值
int max = integer.min_value;
for(int i = 0;iarr[i+1])
else
} system.out.println("max value: "+max);
system.out.println("min value: "+min);
} /**
分治演算法
$$f(n) = 2*f(n/2) + 2 = .....= 1.5n-2$$
所以說採用分治演算法,總的比較次數仍然沒有減少
*/ public static void findmaxmin4(int arr)
// return int[max,min]
public static int search(int arr,int start,int end);
else return new int;
} int l = search(arr,start,start+(end-start)/2);
int r = search(arr,start+(end-start)/2+1,end);
int max = l[0]>r[0]?l[0]:r[0];
int min = l[1]分治:對於分治而言,最終比較的次數依然是1.5n次
// 2.10 尋找陣列中的第二大的值
class test;
findsecondmax(arr);
print(arr);
} /**
拓展問題:如果需要找出n個數的陣列中的第二大的數呢?需要比較多少次呢?是否可以使用類似的分治思想來降低比較的次數呢?
answer:基本思路是一樣的
對於分治而言,最終比較的次數依然是1.5n次
*/ public static void findsecondmax(int arr)
// return int[max,secondmax]
public static int search2(int arr,int start,int end);
else return new int;
} int l = search2(arr,start,start+(end-start)/2);
int r = search2(arr,start+(end-start)/2+1,end);
int max = l[0]>r[0]?l[0]:r[0];
int secondmax = l[0] > r[0]?(r[0]>l[1]?r[0]:l[1]):(l[0]>r[1]?l[0]:r[1]);
return new int;
}}
程式設計之美2 10 尋找陣列中的最大值和最小值
這個問題事實上非常easy解決。就是迴圈遍歷一遍陣列,然後找到陣列中存在的最大值和最小值就能夠了,書中主要討論的問題是比較次數較小的方法。只是。書中已經證明了,不管用什麼方法最少的比較次數也就是迴圈遍歷一遍的比較,結果是o 1.5n 的。所以。非常easy的能夠解決問題。第一種方法 函式宣告 voi...
尋找陣列中的最大值和最小值
問題描述 給出乙個陣列,包含n個整數,那麼需要比較多少次找到最大值和最小值 注意 要想得到最大值和最小值,遍歷一遍陣列是不可避免的。我們能減少的就是減少比較次數來提高效率 方法一 遍歷一遍陣列,同時得到最大值和最小值 具體是,定義乙個max 和 min,每遍歷乙個數,就分別和max 和 min比較一...
尋找陣列中的最大值最小值問題
問題描述 給出乙個陣列,包含n個整數,那麼需要比較多少次找到最大值和最小值 注意 要想得到最大值和最小值,遍歷一遍陣列是不可避免的。我們能減少的就是減少比較次數來提高效率 方法一 遍歷一遍陣列,同時得到最大值和最小值 具體是,定義乙個max 和 min,每遍歷乙個數,就分別和max 和 min比較一...