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

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 13:47
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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