描述
給定乙個陣列包含n個元素,統計前m大的數並且把這m個數從大到小
輸出。輸入
第一行包含乙個整數n,表示陣列的大小。n < 100000。
第二行包含n個整數,表示陣列的元素,整數之間以乙個空格分開
。每個整數的絕對值不超過100000000。
第三行包含乙個整數m。m < n。
輸出從大到小輸出前m大的數,每個數一行。
#include using namespace std;
const int maxn = 100010;
int a[maxn];
void swap(int &a,int &b)
void arrangeright(int a,int s,int e,int m)
//此時a[i]即為key,key左邊的數都比他小,右邊的數都比他大
int now = e - i + 1;
if(now == m)
return;
if(now > m)
arrangeright(a,i+1,e,m);
else
arrangeright(a,s,i-1,m - now);
}void quicksort(int a,int s,int e)
quicksort(a,s,i-1);
quicksort(a,i+1,e);
}int main()
輸出前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 歸併 把每...
Python 輸出前m大的數
給定乙個陣列包含n個元素,統計前m個大的數,並把這m大的數從大到小排列給出 第一行為乙個整數,表述要輸出的前m個數 第二行為n個整數,給出需要排序的陣列 從大到小的m大的數 先找m個大的放在陣列右邊然後再進行排序。找m個大的排在右邊的思想是對整個陣列進行一次快速排序,看返回的中間位置到陣列最後的大小...
輸出前m大的數(快排)
描述 給定乙個陣列,統計前m大的數並且把這k個數從大到小輸出。輸入第一行包含乙個整數n,表示陣列的大小。n 100000。第二行包含n個整數,表示陣列的元素,整數之間以乙個空格分開。每個整數的絕對值不超過100000000。第三行包含乙個整數m。m n。輸出從大到小輸出前m大的數,每個數一行。樣例輸...