求陣列的最大值和最小值

2021-12-29 21:25:00 字數 656 閱讀 1423

求陣列的最大最小值,可以遍歷一遍陣列,然後分別記錄最大值和最小值,這種方法需要的比較次數為2n次。如果想要減少比較次數,可以採用的方法是遍歷陣列,然後比較相鄰元素,把相鄰元素的較大值放在後面,較小的放在前面。在從較大值中選取最大值即為整個陣列的最大值,從較小值中選取最小值即為整個陣列的最小值。這時,需要的比較次數為1.5*n次。

void findmaxmin(int a,int n)

for(i=0;imaxe)

maxe=a[i];

if(a[i]maxe)

maxe=a[i+1];

} cout<

也可以使用分治的方法,先在左半數組求出最大值和最小值,再求右半陣列的最大值和最小值,比較兩個最大值即可求出整個陣列的最大值,比較兩個最小值即可求出整個陣列的最小值。設比較次數為f(n),有f(2)=1;f(n)=2*f(n/2)+2;

可以求出需要的比較次數是1.5*n-2,比較的次數沒有減少。

struct res

;res findmaxmin2(int a,int start,int end)

{

res r;

if(start>=end-1)

{ if(a[start]right.max?left.max:right.max;

r.min=left.min

求陣列的最大值最小值

演算法陣列中的最大值和最小值 方法1 遍歷兩次求出最大值最小值 時間複雜度n 2 方法2 相鄰兩個數分為一組比較,大的放在偶數字,小的放到奇數字,然後在偶數字上找到最大值,在奇數字上找到最小值n 1.5 方法3 定義兩個變數max,min值,相鄰兩個數分為一組,比較出最大值和最小值,最大值和max比...

求陣列中的最大值和最小值

方法1 暴力方法 遍歷一遍陣列,比較2 n次求出最大值和最小值 方法2 改進方法 破壞了原陣列 遍歷一遍陣列使得下標為偶數的元素較下標為奇數的元素大,再分別求出最大值和最小值 比較次數為3 n 2次 方法3 改進方法 不破壞原陣列 遍歷一遍陣列將相鄰元素中較大值和nmax比較,將較小值和nmin比較...

求陣列的最大值與最小值

方法1 通過迴圈查詢陣列的最大值和最小值 minn a 0 maxx a 0 for int j 0 j i j 方法2 利用c 自帶的函式 max element 和 min element include include using namespace std intmain cout max ...