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

织梦网站如何更新系统网站建设技术招聘

织梦网站如何更新系统,网站建设技术招聘,注册安全工程师报名时间,河南卓越建设工程有限公司网站【数据结构】堆 堆排序 如果只是将待排数组建立一个大堆或者小堆是无法得到一个升序或者降序的数组,因为对与一个堆,我们没法知道同一层的大小关系。 但是,如果建立了一个大堆,那么堆顶元素一定是这个数组中最大的,…

【数据结构】堆

堆排序

如果只是将待排数组建立一个大堆或者小堆是无法得到一个升序或者降序的数组,因为对与一个堆,我们没法知道同一层的大小关系。

但是,如果建立了一个大堆,那么堆顶元素一定是这个数组中最大的,那么将堆顶元素删除(并不是真的删除,而是放在数组最后)用其余元素再次建立一个堆,那么这个新堆的堆顶元素就是剩余元素中的最大值,不断循环则个操作不就可以得到一个升序的数组

  • 升序建大堆
  • 降序建小堆

降序排列为例
在这里插入图片描述

void swap(int* a, int* b)
{int temp = *a;*a = *b;*b = temp;
}void sort(int a[], int n)
{for (int i = 1; i < n; i++)//建小堆{ShiftUp(a, n, i);}for (int j = 1; j < n; j++){swap(&a[0], &a[n - j]);ShiftDown(a, n - j, 0);//每次将堆顶的元素(数组末端的交换值)向下移动重新建小堆}
}

在这里插入图片描述

Top-K问题

求数据结合中前K个最大的元素或者最小元素

求解思路

  1. 将前k个元素建堆
    • 如果求最大就建小堆,如果求最小建大堆
  2. 将剩余n-k个元素依次和堆顶元素比较,不满足某个条件就替换
    • 某个条件是:如果求前K个最大元素,则是堆顶元素小于剩余元素,如果求前K个最小元素,则是大于剩余元素

为什么求前K个最大的元素要建小堆

举一个简单的例子,在1,2,3,4,5,6,7中求前3个最大元素
首先前三个元素1,2,3建立一个小堆
在这里插入图片描述
4和小堆堆顶元素比较,替换堆顶元素1,重新建堆(2,4,3)
在这里插入图片描述
5和小堆堆顶元素比较,替换堆顶元素2,重新建堆(3,4,5)
6和小堆堆顶元素比较,替换堆顶元素3,重新建堆(4,6,5)
7和小堆堆顶元素比较,替换堆顶元素4,重新建堆(5,6,7)

替换的过程就是将原来堆中最小的元素剔除掉,换一个较大的元素进去,不断重复这个过程,这个堆中最小的元素越来越大,那么最后也只有第k大的元素可以替换掉这个堆中最小的元素,那么就求出了前K个最大的元素

以求前K个最大元素为例

void TOPK(int*a,int n,int k)
{for (int i = (k - 1) / 2; i >= 0; i--){ShiftDown(a, k, i);}for (int i = k; i < n; i++){if (a[i] > a[0]){int temp = a[i];a[i] = a[0];a[0] = temp;for (int i = (k - 1) / 2; i >= 0; i--){ShiftDown(a, k, i);}}}for (int i = 0; i < k; i++){printf("%d ", a[i]);}}

在这里插入图片描述

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

相关文章:

  • 蛋糕网站设计什么是淘宝seo
  • 网站建设怎么收费被墙网站怎么做301跳转
  • 手机网站图片轮播成都网站制作推来客网站系统
  • 网站建设模板成功案例wordpress响应式中文
  • 网站开发项目 工作分解图软件工程师培训机构排名
  • 后台查看网站容量平台信息发布
  • 开通网站的会计科目怎么做小程序登录不上去怎么办
  • 微信做淘宝客 网站打不开花垣县建设局网站
  • ping站长工具公司开发的网站
  • server 2008 iis部署网站抖音代运营平台哪个好
  • 网站开发属于什么系统廊坊seo推广
  • 重庆网站推广工具如何建设英文网站
  • 门户网站的含义ps做网站页面设置为多大
  • 如何加强精神文明网站建设内容网站内链有什么用
  • 深圳微信分销网站制作《网站开发实训》实验报告
  • 个人网站怎么设计首页wordpress插件的意义
  • 网站建设需求分析运行环境处理器型号及内存容量辽宁智能建站系统价格
  • 企业门户网站建设费用时事新闻
  • 郑州网站制作工作室学校网站网站建设
  • 怎样建一个英文网站设计网站推荐国外
  • 网站界面美观度建设局是干啥的
  • 做网站代码第一不如果网站没有做icp备案吗
  • 校园学生网站开发最新火车停运通知今天
  • 响应式网站建设制作需要注意什么wordpress replytocom
  • 简单的网站设计开发做任务 网站
  • 重庆信息网站推广网站开发项目实例
  • openwrt 网站开发线下推广都有什么方式
  • 哪个网站建设公司网站构成要素
  • xxx学校校园网站建设实践互联网营销外包推广
  • 东莞市建设工程网站小规模公司自学做账