29 最小的K個數

2021-09-27 18:42:07 字數 765 閱讀 2967

題目描述:輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4。

總結:

先從小到大排序,再取出前四個。

一、全排序時間複雜度o(nlogn)

class solution 

for(int j=k-1;j>0;j--)

if(result[k-1]>input[i])//輸入的數大於最大值,替換}}

return result;

}void headadjust(vector& input,int parent,int length)//堆排序

input[parent] = temp;

}};

三、快速排序o(nlogn)

1、先取基準數,指定左右兩個指標l、r(元素下標)移動

2、從最右邊r開始,依次前移,直到比基準元素小,填左邊坑

3、再從左邊l開始,依次後移,直到比基準元素大,填右邊坑

4、在分別對基準元素左、右兩邊遞迴採用上述方法;

class solution 

input[i]=x;//將基準數填到最後的位置

quick(input,l,i-1);//同理,分別左、右遞迴排列

quick(input,i+1,r);}}

};

JZ29 最小的K個數

輸入n個整數,找出其中最小的k個數。示例1 輸入 輸出 4,5,1,6,2,7,3,8 4 1,2,3,4 解法 1.排序 思路十分簡單 排序 輸出前k個數 class solution 2.堆排序 c 優先佇列 priority queue 用法詳解 普通的佇列是一種先進先出的資料結構,元素在佇列...

劍指Offer (29)最小的k個數

題目描述 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4。實現如下 測試用例中給出的返回值是有序的。嘖嘖。找到序列中最小的k個數,利用set,對數字進行insert或erase 紅黑樹中查詢 插入 刪除操作都為 o logk 最...

劍指offer 29 最小的K個數

題目 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,思路分析 簡單思路 先快排,再取數 coding utf 8 class solution def getleastnumbers solution self,tinput,...