当前位置: 首页 > news >正文

绥德网站建设国外设交网站开发客户的重要性

绥德网站建设,国外设交网站开发客户的重要性,做产品推广有网站比较好的,dns 国外网站设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。 找小的数需要建大堆来解决,首先将数组中前K个数建成一个大堆,将从k1个数直到数组结束的所有数与堆顶的数进行比较,如果比堆顶的数小,则替换堆顶的数…

设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。

找小的数需要建大堆来解决,首先将数组中前K个数建成一个大堆,将从k+1个数直到数组结束的所有数与堆顶的数进行比较,如果比堆顶的数小,则替换堆顶的数据,然后在向下调整,重新形成一个新的大堆,如果比堆顶的数小,则不替换。以此循环,直至数组k+1个数到数组结束所有的数都比较完,最后留在堆里的数就是最小的k个数。用题中的题目来说:使用前4个数 1 3 5 7 来建一个大堆。

替换了之后由于不是一个大堆,所以进行向下调整,形成一个新的大堆。

替换了之后进行向下调整

最后输出的结果

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>

void AdjustDown(int* a, int n, int root)//向下调整
{
    int parent = root;
    int child = parent * 2 + 1;
    while (child < n)
    {
        if (child + 1 < n && a[child + 1] > a[child])//选出大的那个孩子
        {
            child++;
        }
        if (a[child] > a[parent])
        {
            int tmp = a[child];
            a[child] = a[parent];
            a[parent] = tmp;
            parent = child;
            child = parent * 2 + 1;
        }
        else
        {
            break;
        }
    }
}

int* smallestK(int* arr, int arrSize, int k, int* returnSize)
{
    *returnSize = k;
    if (k == 0)
        return NULL;
    int* retArr = (int*)malloc(sizeof(int) * k);
    int i = 0;
    for (i = 0; i < k; i++)
    {
        retArr[i] = arr[i];
    }
    //建K个数的大堆
    for (i = (k - 1 - 1) / 2; i >= 0; i--)
    {
        AdjustDown(retArr, k, i);
    }

    for (i = k; i < arrSize; i++)
    {
        if (arr[i] < retArr[0])
        {
            retArr[0] = arr[i];
            AdjustDown(retArr, k, 0);
        }
    }
    *returnSize = k;

    return retArr;
}

int main()
{
    // 测试数据
    int arr[] = { 1,3,5,7,2,4,6,8 };
    int arrSize = sizeof(arr) / sizeof(arr[0]);
    int k = 4;
    int returnSize;

    // 调用 smallestK 函数
    int* result = smallestK(arr, arrSize, k, &returnSize);

    // 输出结果
    printf("The smallest %d elements are:\n", k);
    for (int i = 0; i < returnSize; i++) {
        printf("%d ", result[i]);
    }
    printf("\n");

    // 释放分配的内存
    free(result);
    return 0;
}

http://www.yayakq.cn/news/740676/

相关文章:

  • 电商网站开发常用代码家具设计网站推荐
  • 怎么做倒计时网站专业俄语网站设计
  • 合肥正规的seo公司长沙谷歌seo
  • 商务网站建设心得体会普洱建设单位网站
  • 猎头公司网站建设方案微信小程序定制开发需要多少钱
  • 长网址转短网址网站网站开发者常见问题
  • 小型企业建设网站logofree制作网站
  • 云南固恒建设集团有限公司网站网站备案需要多长时间
  • 网站升级每天自动更新网上怎么发布广告
  • 太原免费静态网站制作网站快慢由什么决定
  • 网站3d特效源码商丘网站推广
  • 360网站建设的目标是什么校园门户网站系统建设关键技术
  • 杭州网站建设价格搭建wordpress服务器
  • 网站未备案会怎么样科技政策要聚焦自立自强
  • 网站优化分析百度登录页
  • 嘉兴云建站模板响水做网站的
  • 濮阳网站优化公司哪家好做中国旅游网站的目的与必要性
  • 昆明做网站建设怎么样python 爬虫 做网站
  • 企业网站托管和网站建设服务商优化图片大小的网站
  • 网站在百度上搜不到了诸城网站建设0536s
  • 智能网站平台百度竞价推广屏蔽软件
  • 龙岗网站设计讯息网站策划书最后一步怎么做
  • 网站 做 app开发长沙网站制作哪家好
  • 网站建设服务器一般多少钱芜湖推广公司
  • 保山便宜的网站建设网络运维工程师工作内容
  • 服装网站建设与实现一级A做爰片秋欲浓网站
  • 郑州网站建设公司有哪些网站热力图怎么做
  • php网站开发介绍中国最新军事新闻
  • 网站源码授权惠东东莞网站建设
  • 高端网站建设 企业网站建站邵阳网站建设上科互联