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

沈阳网站建设策划python做网站比php

沈阳网站建设策划,python做网站比php,莱芜在线话题苏春媛,网站群建设指南题外话 上午学了一些JavaEE初阶知识,下午继续复习数据结构内容 正题 本篇内容把堆的练习题做一下 第一题 1.下列关键字序列为堆的是:( A ) A: 100,60,70,50,32,65 B: 60,70,65,50,32,100 C: 65,100,70,32,50,60 D: 70,65,100,32,50,60 E: 32,50,100,70,65,60 …题外话 上午学了一些JavaEE初阶知识,下午继续复习数据结构内容 正题 本篇内容把堆的练习题做一下 第一题 1.下列关键字序列为堆的是:( A ) A: 100,60,70,50,32,65   B: 60,70,65,50,32,100   C: 65,100,70,32,50,60 D: 70,65,100,32,50,60   E: 32,50,100,70,65,60   F: 50,100,70,65,60,32 第一题解析 堆分为大根堆小根堆, 而且堆是完全二叉树, 只需要从上到下从左到右建立一个完全二叉树再判断是否是大根堆或者是小根堆即可 A 画出图是一个大根堆 其余画出图既不是大根堆也不是小根堆 第二题 2.已知小根堆为8,15,10,21,34,16,12删除关键字8之后需重建堆在此过程中关键字之间的比较次数是( C ) A: 1     B: 2     C: 3   D: 4 第二题解析 先画图,然后运用堆的删除,将8和最后一个元素12交换位置删除,再调整位置变成小根堆计数关键字比较次数即可 12先和15,10比较,和10交换位置,然后再和16比较调整为小根堆,一共比较三次 第三题 3.最小堆[0,3,2,5,7,4,6,8],在删除堆顶元素0之后其结果是( C ) A: [3257468] B: [2357468] C: [2345786] D: [2345678] 第三题解析 和第二题一样,先画图,0与8交换,然后调整为小根堆即可 结果为2,3,4,5,7,8,6 PriorityQueue Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列 PriorityQueue是线程不安全的 PriorityBlockingQueue是线程安全的 本文主要介绍PriorityQueue。 1.使用时必须导入PriorityQueue所在的包 import java.uitl.PriorityQueue; 2.PriorityQueue中放置的元素必须要能够比较大小不能插入无法比较大小的对象否则会抛出 ClassCastException异常 3. 不能插入null对象否则会抛出NullPointerException 4. 没有容量限制可以插入任意多个元素其内部可以自动扩容 5.PriorityQueue默认情况下是小堆---即每次获取到的元素都是最小的元素,如果需要大堆需要用户提供比较器 用比较器创建大根堆 先说下Prriority常用构造方法, PriorityQueue() 创建一个空的优先级队列默认容量是11 PriorityQueue(int initialCapacity) 创建一个初始容量为initialCapacity的优先级队列注意 initialCapacity不能小于1否则会抛IllegalArgumentException异常 PriorityQueue(Collection c) 用一个集合来创建优先级队列 我们可以自己传一个比较器,创建大根堆,代码如下 class IntCmp implements ComparatorInteger {     Override     public int compare(Integer o1, Integer o2) {        return o2.compareTo(o1)  } } 这样插入元素的时候都会是以大根堆的方式插入 相关练习题 第一题 设计一个算法找出数组中最小的k个数。以任意顺序返回这k个数均可。 第一题思路 1.创建一个大根堆,把数组前k个元素添加进去 2.因为是大根堆,用数组剩余元素与堆顶元素进行比较,堆顶元素是大根堆中最大的,如果比堆顶元素小就删除堆顶元素,插入当前数组元素,会自动调整为大根堆 3.当数组全部遍历完成,大根堆的k个元素就是最小的k个元素 第一题代码详解 public int[] smallestK(int[] arr, int k) {//创建数组ret,容量为kint[] retnew int[k];//如果数组为空,或者k小于等于0,说明根本找不到最小的k个元素,不合法if(arrnull||k0){//直接返回retreturn ret;}//创建优先级队列PriorityQueue,使用匿名内部类传入比较器PriorityQueueInteger pnew PriorityQueue(new ComparatorInteger() { //将比较器设置成满足大根堆的形式Overridepublic int compare(Integer o1, Integer o2) {return o2.compareTo(o1);}});//添加前k个元素for (int i0;ik;i){p.offer(arr[i]);}//比较k以后元素是否比堆顶元素小for (int i k; i arr.length ; i) {int topp.peek();//如果比堆顶元素小if (arr[i]top){//删除堆顶元素p.poll();//添加当前数组元素p.offer(arr[i]);}}//最后将最小的k个元素传入数组ret中即可for (int i 0; i k; i) {ret[i] p.poll();}//返回retreturn ret;} 第二题 堆排序,从大到小排序 第二题思路 1.我们先考虑,堆排序是建立大根堆还是建立小根堆 2.大根堆我们能保证堆顶元素是整个堆中最大的,小根堆我们能保证堆顶元素是整个堆中最小的 3.我们只需要建立大根堆,然后将堆顶元素和最后一个元素交换,然后再大根堆排序,然后再让堆顶元素和堆尾没有交换过的元素一一交换,再大堆根排序即可 第二题代码详解 //向下调整(上一篇堆的博客写过) private void siftDown(int parent,int len) {int childparent*21; //child等于len不会进入循环while (childlen){if (child1lenelem[child]elem[child1]){childchild1;}if (elem[child]elem[parent]){swap(parent,child);parentchild;childparent*21;}else {break;}}} //堆排序,从小到大排序 public void heapSort() { //让end保存最后一个元素下标int endusedSize-1; //当end0的时候就需要排序,等于零说明不需要排序了while(end0){ //交换堆顶和没有交换过的最后一个元素值swap(0,end); //向下排序,将没交换的排序为大根堆,end下标位置不会进入排序siftDown(0,end); //让末尾位置调整到前一个即可end--;} } 小结 大家有什么意见可以在评论区说出来,我都会改进!!!
http://www.zqtcl.cn/news/648497/

相关文章:

  • 品牌网站如何做seo浏览器正能量网址
  • 开封做网站哪家好网页设计制作网站大一素材
  • 河南网站域名备案莱芜新闻电视台节目表
  • 长春网站建设新格做天猫还是做网站推广
  • 新网站建设的感想安阳区号是什么
  • 余姚市城乡建设局网站wordpress 预览插件
  • 游戏开发和网站开发wordpress foreign trade
  • 网站设计 原型图html购物网站模板
  • 谷歌网站推广报价国产搜什么关键词最好看
  • 婚礼网站有哪些个人做网站需要什么条件
  • 深圳企业网站seo人才招聘网站建设
  • 谷歌下载seo是什么软件
  • 个人网站设计分析小程序在线制作平台
  • 网站开发 一般用什么语言vi视觉设计案例
  • 微信公众平台官方网官网seo优化找哪家做
  • 简约 网站模板网站目录链接怎么做
  • 国内地铁建设公司网站大连做网站外包
  • 微网站营销是什么网站图片上传代码
  • 外包公司做网站多少用vs做的网站怎么打开
  • 兴义城乡建设部网站企业服务器配置方案
  • 淘宝客网站根目录wordpress调用导航代码
  • 海外免费网站推广网站开发项目报告书
  • 大气的金融网站深圳专门做兼职的网站
  • 最新网站备案四平网站公司
  • 济宁恒德建设有限公司网站互联网营销师报名入口
  • 做灯饰的企业都会在哪些网站网站排名恢复
  • 互联网公司网站建设价格跨境支付互联互通
  • 杭州 高端网站 开发宜昌建设网站公司
  • 咋样做网站快照济南建设质量协会网站
  • 学校网站怎么建设兄弟网络(西安网站建设制作公司)