給定N個數,確定第K個最大值

2021-10-09 07:20:06 字數 902 閱讀 5730

選擇問題

給定n個組,確定第k個最大值

稍微好一點的演算法可以先把前k個元素讀人陣列並(以遞減的順序)對其排序。接著,將剩下的元素再逐個讀人。當新元素被讀到時,如果它小於陣列中的第個元素則忽略,否則就將其放到陣列中正確的位置上,同時將陣列中的乙個元素擠出陣列。當演算法終止時,位於第k個位置上的元素作為答案返回。

#include

intmain

(int argc,

char

const

*ar**)

;int arrsize =

sizeof

(arr)

/sizeof

(arr[0]

);//尋找第k個最大值

int k =

5,tmp;

int sortarr[k]

;//對於sortarr初試化

for(

int i =

0; i < k; i++

)//對於sotarr進行降序排序

for(

int i =

0; i < k-

1; i++)}

}//將arr中元素於sortarr中的比較

for(

int i = k; i < arrsize; i++

) sortarr[j]

=arr[i];}

else

break

;//只讓其比較一次}}

}//輸出除錯

for(

int i =

0; i < k; i++

)return0;

}

求陣列中連續k個數最大值

變式題求數列中第k大的數 前k大問題 給定乙個長度為n陣列,求每個連續k個數的最大值,複雜度要求o n log k 解釋 例如陣列為 1,3,2,4,5 k 2,則連續k個數的區間有 1,3 3,2 2,4 4,5 每個區間的最大值分別為3,3,4,5,所以輸出3,3,4,5 include usi...

7 給定n個序列,求相鄰的k個數之和為最大

1 問題描述 給定 n個數,求相鄰的 k個數之和為最大。要求給出複雜度較小的一種演算法 再解決這個問題前,先了解一下類似的常見問題。2 給定一串數字 可正可負的 int,放在陣列 num裡 要求找到起始位置 start 和終止位置 end,使得從 start 位置到end 位置的所有數字之和最大,返...

1024 n個數的最大值和最小值

description 找出n個數中最大的數和最小的數,並將它們的值輸出出來。input 輸入為n 1個整數,都在int型別範圍內。這些數可能用若干空格或者換行符分隔開。輸入的第1個數為n,表示後續有n個數輸入。從輸入的第2個數開始,求出直到第n 1個數中最大的數和最小的數。output 輸出為兩行...