题解 | #最小的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;

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-18 12:01
点赞 评论 收藏
分享
机械打工仔:有说的你怀疑一下就行了,直接问也太实诚了
点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务