輸出前m大的數 快速排序思想

2022-07-22 07:21:10 字數 696 閱讀 8402

題目:

給定乙個無序陣列,要求輸出其前m大的數

思路:利用快速排序中的劃分方法,將前m大的數安排到陣列的右邊,然後對這m個大的數進行排序,再倒序輸出即可

**是大一時寫的,如果沒記錯的話是抄自郭煒老師。這次重溫複習。

/*

4.3輸出前m大的數

*以從小到大的順序輸出 */

#include

using

namespace

std;

void swap(int &a,int &b)

void arrangeright(int a,int s,int n,intk)

if(n - i + 1 == k) return

;

else

if( n - i + 1 > k ) arrangeright(a,i+1

,n,k);

else

if( n - i + 1

< k ) arrangeright(a,s,i-1,k-n+i-1

); }

void qsort(int a, int s,int e) //

排序a[s]到a[e];

qsort(a,s,i-1

); qsort(a,i+1

,e);

} intmain()

輸出前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個大的排在右邊的思想是對整個陣列進行一次快速排序,看返回的中間位置到陣列最後的大小...