设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。
示例:
输入: arr = [1,3,5,7,2,4,6,8], k = 4
输出: [1,2,3,4]
提示:
0 <= len(arr) <= 100000
0 <= k <= min(100000, len(arr))
来源:力扣(LeetCode)
快速排序
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int cmp(int* a, int* b)
{
return *a - *b;
}
int* smallestK(int* arr, int arrSize, int k, int* returnSize)
{
*returnSize = k;
qsort (arr, arrSize, sizeof(int), cmp);
int* ans = malloc(sizeof(int) * k);
for(int i = 0; i < k; i++)
{
ans[i] = arr[i];
}
return ans;
}