题解 | #最小的K个数#
最小的K个数
https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param input int整型一维数组
* @param inputLen int input数组长度
* @param k int整型
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*/
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
static int B[10010];
void Merge(int A[], int low, int mid, int high)
{
int i,j,k;
for (k=low; k<=high; k++) B[k] = A[k];
for (i=low, j=mid+1, k=i; i<=mid&&j<=high; k++)
{
if (B[i]<=B[j]) A[k] =B[i++];
else A[k] = B[j++];
}
while (i<=mid) A[k++] = B[i++];
while (j<=high) A[k++] = B[j++];
}
void MergeSort(int A[], int low, int high)
{
if (low<high)
{
int mid = (low + high) /2;
MergeSort(A, low, mid);
MergeSort(A, mid+1, high);
Merge(A, low, mid, high);
}
}
int* GetLeastNumbers_Solution(int* input, int inputLen, int k, int* returnSize ) {
// write code here
// 快速排序
// QuickSort(input, 0, inputLen-1);
* returnSize = k;
MergeSort(input, 0, inputLen-1);
for (int i =0; i<inputLen;i++) printf("%d ", input[i]);
return input;
}
查看10道真题和解析

