程式設計題 n個數里最小的k個

2021-08-25 17:32:21 字數 711 閱讀 2136

輸入描述:

每個測試輸入包含空格分割的n+1個整數,最後乙個整數為k值,n

不超過100。

輸出描述:

輸出n個整數裡最小的k個數。公升序輸出
示例1

3 9 6 8 -10 7 -11 19 30 12 23 5
-11 -10 3 6 7
第一種方法,用容器:

#include#include#includeusing namespace std;

int main()

int k=v[v.size()-1];

v.pop_back();

sort(v.begin(),v.end());

for(int i=0;i第二種方法用陣列:

#include#include using namespace std;

int main()

geshu=a[n-1];

set::iterator it;

it=s.find(geshu);

s.erase(it);

int k=0;

for(it=s.begin();it!=s.end();it++,k++)

system("pause");

return 0;

}

查詢n個數中最小的k個元素

求n個數中最小的k個元素 n很大,k相對較小 建立乙個k個元素的堆 再逐個插入,最壞情況時間複雜度為o nlgk include 求左右葉子 父結點的巨集定義 define left i i 2 define right i i 2 1 define parent i i 2 維持堆的性質 演算法原...

輸入n個整數,求出最小的K個數字

該問題我們可以先維護乙個大小為k的陣列karr,然後遍歷n個整數,當某個值比karr的最大的還要小時,就更新該陣列。如下 include include include include using namespace std void display int intarr,int length co...

刷題之路 最小的K個數

輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4。最優方法可以做到n log k 做法就是使用堆排序,只維護乙個規模為k的大根堆,之後遍歷所有的數字,一旦後面數字比堆頂小,則交換兩數,並重新調整大根堆,遍歷完成後堆中元素就是最小的...