選擇問題
給定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 輸出為兩行...