輸出前m大的數(快排)

2021-08-22 10:18:16 字數 781 閱讀 9653

描述

給定乙個陣列,統計前m大的數並且把這k個數從大到小輸出。

輸入第一行包含乙個整數n,表示陣列的大小。n < 100000。

第二行包含n個整數,表示陣列的元素,整數之間以乙個空格分開。每個整數的絕對值不超過100000000。

第三行包含乙個整數m。m< n。

輸出從大到小輸出前m大的數,每個數一行。

樣例輸入

10

4 5 6 9 8 7 1 2 3 0

5

樣例輸出

987

65

為了降低時間複雜度,運用快排求該問題。

1)先找到那m大的值

2)對這m大的值進行排序

如何找m大的值:

快排,找取中間值,比中間值大的在右邊,小的在左邊。

若右半部分正好等於m,直接返回,繼續2)。

若右半部分大於m,則繼續呼叫1),在右半部分中尋找m大的數

若右半部分小於m個,則需在左半部分需要剩下的數。

#include#include#define p 100001

using namespace std;

int ans=0,n,a[p],b[p],m;

void swap(int &m,int &n)

void kuaipai(int s,int e,int m)

void kuai(int s,int e)

}

輸出前m大的數

o n mlogm n為快排中線性掃瞄時間,mlogm為對m各最大數進行歸併排序耗時 includeusing namespace std int a 100 void swap int a,int b void merge int a,int s,int m,int e,int tmp 歸併 把每...

輸出前m大的數

描述 給定乙個陣列包含n個元素,統計前m大的數並且把這m個數從大到小 輸出。輸入 第一行包含乙個整數n,表示陣列的大小。n 100000。第二行包含n個整數,表示陣列的元素,整數之間以乙個空格分開 每個整數的絕對值不超過100000000。第三行包含乙個整數m。m n。輸出從大到小輸出前m大的數,每...

Python 輸出前m大的數

給定乙個陣列包含n個元素,統計前m個大的數,並把這m大的數從大到小排列給出 第一行為乙個整數,表述要輸出的前m個數 第二行為n個整數,給出需要排序的陣列 從大到小的m大的數 先找m個大的放在陣列右邊然後再進行排序。找m個大的排在右邊的思想是對整個陣列進行一次快速排序,看返回的中間位置到陣列最後的大小...