使用選擇排序的思想:時間複雜度o(n*k)
#includeusing namespace std;
void selectmax(int arr,int n,int k) }}
void selectsort(int arr,int n) }}
void swap(int &a,int &b)
int main(void)
; //selectsort(arr,8);
selectmax(arr,8,2);//最的兩個數字於陣列的最後。
for(int i = 0; i < 8; ++i) }
swap(arr[i + 1],arr[r]);
return i + 1;
}//begin代表開始的位置,end代表的結束的位置,k為最大的k+1個數
void kbig(int arr,int begin,int end,int k)
else//否則進入左區域 }
int main(void)
; partition(arr,0,7);
kbig(arr,0,19,4);
for(int i = 0; i < 20; ++i)
{ cout<
利用K 堆求最大的K個數
1.原理 1.1將資料存在陣列中,利用堆排排序陣列的前k個數 遞增 此時建立的是小堆,陣列的第乙個元素儲存堆中最小值。1.2從 k 1 個陣列元素遍歷到最後,每次都和堆頂元素對比,如果大於堆頂元素,交換兩者,調整堆。1.3輸出陣列前k個數,就是最大的k個數。include define k 3 vo...
leetcode 最小的k個數 使用快速排序
class solution int part vector arr,int begin,int end int pivot arr begin int i begin,j end while ipivot i用排序來做的,主要複習一下快速排序,寫乙個分割槽函式part,將陣列在begin end之...
第K個數 快速排序
題目描述 description 給定乙個長度為n 0輸入描述 input description 第一行為2個數n,k 含義如上題 第二行為n個數,表示這個序列 輸出描述 output description 如果m為質數則 第一行為 yes 沒有引號 第二行為這個數m 否則 第一行為 no 第二...