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

golang 网站开发做网站 什么语言好

golang 网站开发,做网站 什么语言好,公众号做电影采集网站会被封,微软做网站的软件堆排序是一种与插入排序和并归排序十分不同的算法。 优先级队列 Priority Queue 优先级队列是类似于常规队列或堆栈数据结构的抽象数据类型#xff08;ADT#xff09;。优先级队列中的每个元素都有一个相关联的优先级key。在优先级队列中#xff0c;高优先级的元素优先于…堆排序是一种与插入排序和并归排序十分不同的算法。 优先级队列 Priority Queue 优先级队列是类似于常规队列或堆栈数据结构的抽象数据类型ADT。优先级队列中的每个元素都有一个相关联的优先级key。在优先级队列中高优先级的元素优先于低优先级的元素。 虽然优先级队列通常使用堆heap实现但它们在概念上与堆不同。优先级队列是一种抽象的数据结构如列表或映射; 正如列表可以用链表或数组实现一样优先级队列也可以用堆或其他方法(如有序数组)实现。 堆 Heap 堆可以理解为由一个由数组来顺序存储的完全二叉树。 最大堆任意节点的key ≥ 子节点的key 类似的 最小堆任意节点的key ≤ 子节点的key 以最大堆为例来讲解 最大堆 最大堆的操作 build_max_heap根据一个未排序的数组生成一个最大堆 max_heapify: 如果子树的根节点违反最大堆的特性就对其进行纠正。max_heapify的前提是子树的左右子树都是最大堆。 build_max_heap的伪代码 for i n/2 down to 1do max_heapify(A,i) max_heapify和build_max_heap的时间复杂度 对叶子结点上面一层的结点(level 1)进行max_heapify是O(1)的时间复杂度 对叶子结点上面i层 level i 的结点进行max_heapify是O(i) n/4个结点是level 1n/8个结点是level 2n/16个结点是level 3  ... 1个结点是level logn 因此max_heapify的时间复杂度为O(logn)可计算出build_max_heap的时间复杂度为O(n) 计算过程在最底下 堆排序步骤 1.根据一个未排序的数组来创建最大堆 2.找到最大元素A[1] 3.交换元素A[n]和A[1]现在最大元素位于堆的尾部 4.移除A[n]最大元素只需将存放堆的数组的大小减1 5.经过交换元素之后的堆也许违背了最大堆的定义但是A[1]的孩子仍然是最大堆因此进行max_heapify经过修正后整个堆就是最大堆重复步骤2-5n次。 class Solution { public://堆是一个完全二叉树因此适合使用顺序存储的方式。//堆排序步骤//1.根据一个未排序的数组来创建最大堆//2.找到最大元素A[1]//3.交换元素A[n]和A[1]现在最大元素位于堆的尾部//4.移除A[n]最大元素存放堆的数组的大小减1//5.经过交换元素之后的堆也许违背了最大堆的定义但是A[1]的孩子仍然是最大堆因此进行max_heapify经过修正后整个堆就是最大堆重复2-5n次//时间复杂度O(nlogn)vectorint sortArray(vectorint nums) {build_max_heap(nums);//堆排序int n nums.size();while(n 0){//重复n次//找到最大元素并与堆末尾元素进行交换int max_elem nums[0];nums[0] nums[n-1];nums[n-1] max_elem;--n;//移出末尾元素//进行max_heapifymax_heapify(nums, 0, n);}return nums;}void build_max_heap(vectorint nums){int size nums.size();for(int i size/2-1;i 0;--i){max_heapify(nums, i, size);}}void max_heapify(vectorint nums, int i, int size){//将A[i]修正为最大堆//A[i]的左孩子为A[2i1]右孩子为A[2i2]int left (i1) 1;int right left 1;int large left;//默认较大元素为左节点while(large size){if(right size nums[right] nums[left]){//假如右结点大于左节点large right;//记右结点为较大的}if(nums[i] nums[large]){//假如父节点小于左右结点中较大的结点//将父节点与较大的结点进行交换从而使父节点大于左右子结点符合最大堆的约束int tmp nums[i];nums[i] nums[large];nums[large] tmp;i large;//i调节为其子结点largelarge (i1) 1;//large调整为i的左子节点}else{break;}}}};
http://www.hkea.cn/news/14560739/

相关文章:

  • 淘宝是什么语言做的网站苏州互联网公司多吗
  • 南宁做网站优化项目网站
  • 哈尔滨公司网站建设生成二维码在线生成器
  • 中小型企业网站建设与推广重庆网站建设方案书
  • 广州网站开发定制公司中国建设工程质量安全管理协会网站
  • 网站维护费一年多少钱建设电子书阅读网站
  • 网站建设中企动力上海吉林省最新今天的消息
  • 网站备案后有什么好处提升seo排名平台
  • 建设网站都需要哪些资料制作网址怎么收费
  • 数据库网站开发专业商城网站建设报价
  • 做网站的公司都有哪些google google
  • 贵阳网站制作上海网站建设服务分录
  • 个人网站制作协议高端模板网站建设公司
  • 唐朝网站Wordpress自动回复评论
  • h5企业模板网站模板下载nginx wordpress 配置
  • 做营销型网站 公司一般网站建设都用什么字体
  • 网站icon怎么设置微信网站怎么收款
  • 个人备案号 可以做游戏网站吗网上售卖平台有哪些
  • 网站开发与网页制作的区别wordpress 安装ftp
  • 视频网站开发技术书企业如何进行搜索引擎优化
  • 高碑店建设局网站桂林网站制作网站
  • 深做网站公司网络推广是做什么工作的
  • 旅游网站总结医院科室网站建设
  • 快手淘客网站是怎么做的网站建设 爱诚科技
  • 电子商务网站建设风格城乡建设部统计网站
  • 镇江手机网站制作广告公司的电话
  • 学校网站建设需求分析调研表石家庄网络公司查封
  • 卡片式设计网站图库素材网站模板
  • 自己建设网站用哪个黄山网站设计
  • 营销网站首页设计创建商城app