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

哪些网站设计的好嘉兴互联网公司

哪些网站设计的好,嘉兴互联网公司,网络加速器下载,济南建设档案大厦一.优先级队列概念:队列的元素是遵循先进先出的原则,而优先级队列是优先级最高的先出队列二.堆概念:对一个集合元素,堆是按照完全二叉树的顺序存储方式把数据存储到一维数组中分为大根堆和小根堆图像:性质:…

一.优先级队列

概念:队列的元素是遵循先进先出的原则,而优先级队列是优先级最高的先出队列

二.堆

概念:

对一个集合元素,堆是按照完全二叉树的顺序存储方式把数据存储到一维数组

分为大根堆和小根堆

图像:

性质:

堆中某个节点的值总是不大于或不小于其父节点的值;

堆总是一棵完全二叉树。

三.大小堆的模拟实现

可以分为向上和向下过程分为俩种模式

向下过程:

向上过程:

    public void shiftUp(int child){int pre =(child-1)/2;while (pre >= 0) {if(elem[pre]<elem[child]){swap(elem,child,pre);child=pre;pre=(child-1)/2;}else {break;}}}

四.PriorityQueue的模拟实现

public void offer(int value){if(isFull()){grow();}elem[size]=value;shiftUp(size);size++;}public  int poll(){if(isEmpty()){return -1;}int ret =elem[0];size--;swap(elem,0,size);shiftDown(0,size);return ret;}public int peek(){if (isEmpty()){return -1;}return elem[0];}

注意:

利用以上的offer方法(向上过程)就可以创建堆

原理:在一个大根堆或小根堆最后一个空间插入,再向上过程(shifup),就形成了大根堆或小根堆

poll方法原理:将0下标和未下标的值交换位置,尾下标向前一位,在对0这棵树进行调整

优点:由于之前为大根堆或小根堆,交换位置后,只要0下标这棵树不是小根堆或大根堆,只需要向下调整0下标这颗大树即可就能转化为小根堆或大根堆

五.向下过程和向上过程创建堆的复杂度

六.堆排序

过程:

1. 建堆

升序:建大堆

降序:建小堆

2. 利用堆删除思想来进行排序

举例:

七.PriorityQueue的方法和使用

1.方法

2.使用


3.默认创建为小根堆的原因和如何创造出大根堆

八.Top-K问题

TOP-K问题:即求数据集合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。

方法1:

public int[] smallestK(int[] arr, int k) {PriorityQueue<Integer> queue = new PriorityQueue<>();for(int i=0;i<arr.length;i++){queue.offer(arr[i]);}int[] ret =new int[k];for(int j=0;j<k;j++){ret[j]=queue.poll();}return ret;}

时间复杂度为:Nlog_{2}

class Bigheap implements Comparator<Integer>{@Overridepublic int compare(Integer o1, Integer o2) {return o2.compareTo(o1);}
}
class Solution {public int[] smallestK(int[] arr, int k) {int[] ret =new int[k];if(arr==null||k==0){return ret;}Bigheap bigheap =new Bigheap();PriorityQueue<Integer> queue = new PriorityQueue<>(bigheap);//klogkfor(int i=0;i<k;i++){queue.offer(arr[i]);}//(N-k)logkfor(int j=k;j<arr.length;j++){int max=queue.peek();if(max>arr[j]){queue.poll();queue.offer(arr[j]);}}//klogkfor(int s =0;s<k;s++){ret[s]=queue.poll();}return ret;}
}

时间复杂度为:Nlog_{k}

同过比较第二种方法好一些。

http://www.dtcms.com/a/613576.html

相关文章:

  • GM-3568JHF丨ARM+FPGA异构开发板系列教程:基础入门 1- 开发环境搭建
  • 从括号匹配到字符串解码:递归思想的巧妙应用
  • 第7章 Node框架实战篇 - Express 中间件与RESTful API 接口规范
  • 编译器用什么语言开发 | 深入探讨编译器开发的语言选择及其影响
  • 实战内网PTH上线域控
  • 基于YOLOv5-AUX的棕熊目标检测与识别系统实现
  • 东北网站建设国网典型设计最新版
  • 白酒网站设计广告设计与制作教程
  • 建设文明网站包括个人网站学生作业
  • 面对AI的思考,如何区分什么能力是人最根本的能力?
  • 当“能者”不再“多劳”:于倦怠深处,寻一方从容
  • 分布式系统测试包含子系统的系统测试,数据一致性测试,并发测试
  • less 工具 OpenHarmony PC适配实践
  • 人工智能之数据分析 numpy:第三章 Ndarray 对象和数组创建
  • Claude Code API Gateway 配置指南
  • 网站怎么做404 301深圳网站论坛建设
  • 网站后台m整套网站设计
  • claude code 食用指南
  • 专题1:双指针
  • 基于Vue的鲜花销售系统33n62(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
  • sdc 编写笔记
  • Rabbit MQ:概述
  • 建站之星管理中心注册海外公司
  • 【HarmonyOS】ArkWeb——从入门到入土
  • 微网站 微信网站优化服务是什么意思
  • VS Code 隐藏顶部标题栏中间的文字
  • 珠海网站哪家好如何给网站流量来源做标记通过在网址后边加问号?
  • Rust入门
  • Rust入门 之一
  • “伪”局域网