N個元素中選最大最小

2021-06-26 13:00:25 字數 1118 閱讀 2817

n

個元素中選最大最小

問題描述:從n

個元素中,選出最大元素和最小元素。分析複雜度。

方法:方法有三種。

方法一:

最笨的方法,迴圈一次找出最大的算素。再迴圈一下找到最小的。這裡2

次迴圈可以放在一起,作為小小的優化。比較次數:2* (n – 1) = 2n – 2。

**:

void select_max_min_1(int *a,int n,int &max,int &min)

else

for(i=2; ia[kmax]) kmax=i;

if(a[i]

方法三:

每相鄰2

個元素比較,較大的放後面,較小的放前面。在較大的元素中,找最大的。在較小的元素中找最小的。

odd:o((3n-3)/2) n

為奇數

even:o(3n-4)/2) n

為偶數

**:

///這裡注意序號的關係,其餘都很好理解。

void select_max_min_3(int *a,int n,int &max,int &min)

}for(i=3; ia[kmax]) kmax=i;

if(a[i-1]a[n-1]) kmin=n-1;

max=a[kmax];

min=a[kmin];

}else ///偶數

}for(i=3; ia[kmax]) kmax=i;

if(a[i-1]分析: n

為偶數好分析,就先說偶數情況。 n

為偶數時,相鄰元素比較n/2

次,在每個n/2

個元素中分別找最大最小,2*

(n/2-1)。

共計:n / 2+ 2 *

(n/ 2 – 1

) =3n/2 – 2。

n為奇數時,n-1

為偶數,用偶數方法得出n-1

個元素中的最大最小,帶入上面的式子。3(n-1) / 2 – 2

。剩下乙個元素分別與得出的最大最小比較,得出最終的最大最小值。

共計:3(n-1 )/ 2 – 2 + 2 = (3n – 3 ) / 2。

在N個元素中選取前M個元素

import org.junit.test public class solution int arr maxarr arr,3 for int i 0 i 5 i 問題 在n個元素中選取前m個元素 思路 1 建立長度為m的陣列,作為最小堆 或則arr 0,m 1 構建小頂堆 3 先往最小堆中存入一...

找到最大或最小的N個元素

在某個集合中找出 最大或最小的n個元素 heapq模組的nsmallest 和 nlargest是我們所需要的。如果只是找最大和最小max min更適合我們 更快 import heapq portfolio 可以接受key值 cheap heapq.nsmallest 3,portfolio,ke...

Python查詢最大或最小的 N 個元素

本文為python cookbook第三版1.4的內容 怎樣從乙個集合中獲得最大或者最小的 n 個元素列表?heapq 模組有兩個函式 nlargest 和nsmallest 可以完美解決這個問題。import heapq nums 1,8,2,23,7,4,18,23,42,37,2 print ...