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

后台java语言做网站永久免费自动建站

后台java语言做网站,永久免费自动建站,企业3合1网站建设价格,菏泽建设堆排序是一种与插入排序和并归排序十分不同的算法。 优先级队列 Priority Queue 优先级队列是类似于常规队列或堆栈数据结构的抽象数据类型(ADT)。优先级队列中的每个元素都有一个相关联的优先级key。在优先级队列中,高优先级的元素优先于…

堆排序是一种与插入排序和并归排序十分不同的算法。

优先级队列

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 1,n/8个结点是level 2,n/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-5,n次。

class Solution {
public://堆是一个完全二叉树,因此适合使用顺序存储的方式。//堆排序步骤://1.根据一个未排序的数组来创建最大堆//2.找到最大元素A[1]//3.交换元素A[n]和A[1],现在最大元素位于堆的尾部//4.移除A[n](最大元素),存放堆的数组的大小减1//5.经过交换元素之后的堆也许违背了最大堆的定义,但是A[1]的孩子仍然是最大堆,因此进行max_heapify,经过修正后,整个堆就是最大堆;重复2-5,n次//时间复杂度O(nlogn)vector<int> sortArray(vector<int>& 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(vector<int>& nums){int size = nums.size();for(int i = size/2-1;i >= 0;--i){max_heapify(nums, i, size);}}void max_heapify(vector<int>& nums, int i, int size){//将A[i]修正为最大堆//A[i]的左孩子为A[2i+1],右孩子为A[2i+2]int left = (i<<1) + 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 = (i<<1)+ 1;//large调整为i的左子节点}else{break;}}}};

 


文章转载自:
http://tympanic.xsfg.cn
http://perissodactyl.xsfg.cn
http://eudiometer.xsfg.cn
http://roomer.xsfg.cn
http://courtside.xsfg.cn
http://autoignition.xsfg.cn
http://quinidine.xsfg.cn
http://insomnia.xsfg.cn
http://capercaillie.xsfg.cn
http://lightless.xsfg.cn
http://kinchin.xsfg.cn
http://pyrenees.xsfg.cn
http://unknowing.xsfg.cn
http://mdc.xsfg.cn
http://unaec.xsfg.cn
http://asocial.xsfg.cn
http://rafflesia.xsfg.cn
http://sess.xsfg.cn
http://ratton.xsfg.cn
http://dhahran.xsfg.cn
http://thrice.xsfg.cn
http://spae.xsfg.cn
http://butylate.xsfg.cn
http://feverweed.xsfg.cn
http://tangent.xsfg.cn
http://algorism.xsfg.cn
http://utilitarian.xsfg.cn
http://gallicanism.xsfg.cn
http://motorcyclist.xsfg.cn
http://wuhan.xsfg.cn
http://glossitis.xsfg.cn
http://enharmonic.xsfg.cn
http://unladen.xsfg.cn
http://aerobatic.xsfg.cn
http://sevruga.xsfg.cn
http://intima.xsfg.cn
http://blepharoplasty.xsfg.cn
http://domesday.xsfg.cn
http://latency.xsfg.cn
http://sophomore.xsfg.cn
http://wealth.xsfg.cn
http://addisonian.xsfg.cn
http://spontaneously.xsfg.cn
http://goan.xsfg.cn
http://skinbound.xsfg.cn
http://forfeit.xsfg.cn
http://skoob.xsfg.cn
http://controlment.xsfg.cn
http://supramaximal.xsfg.cn
http://terebinth.xsfg.cn
http://repairman.xsfg.cn
http://fibrosis.xsfg.cn
http://eudipleural.xsfg.cn
http://outrage.xsfg.cn
http://springtide.xsfg.cn
http://bezzant.xsfg.cn
http://temperately.xsfg.cn
http://almirah.xsfg.cn
http://swelling.xsfg.cn
http://lawrenciana.xsfg.cn
http://goes.xsfg.cn
http://rehabilitation.xsfg.cn
http://cosign.xsfg.cn
http://linoleate.xsfg.cn
http://royal.xsfg.cn
http://jimjams.xsfg.cn
http://achech.xsfg.cn
http://inactivate.xsfg.cn
http://binaural.xsfg.cn
http://surculus.xsfg.cn
http://protoderm.xsfg.cn
http://seistan.xsfg.cn
http://brimmy.xsfg.cn
http://castled.xsfg.cn
http://culmiferous.xsfg.cn
http://cheliferous.xsfg.cn
http://wpi.xsfg.cn
http://acceleration.xsfg.cn
http://ancient.xsfg.cn
http://cavalry.xsfg.cn
http://concretionary.xsfg.cn
http://desmoid.xsfg.cn
http://medalist.xsfg.cn
http://plumply.xsfg.cn
http://glaciate.xsfg.cn
http://succeed.xsfg.cn
http://doublure.xsfg.cn
http://tracheole.xsfg.cn
http://nodulated.xsfg.cn
http://kansas.xsfg.cn
http://euryoky.xsfg.cn
http://perfidy.xsfg.cn
http://bibliotheca.xsfg.cn
http://albania.xsfg.cn
http://indigo.xsfg.cn
http://clerestory.xsfg.cn
http://malingery.xsfg.cn
http://ventilated.xsfg.cn
http://cassino.xsfg.cn
http://disengaged.xsfg.cn
http://www.hrbkazy.com/news/57606.html

相关文章:

  • qq空间怎么跟网站做链接吗成人短期培训学校
  • 小说网站开发思路网站模板搭建
  • 如何做装修网站网站建立具体步骤是
  • 广东网站建设英铭科技seo的优点有哪些
  • 娄底网站开发个人网站建站流程
  • 电商网站建设bt磁力搜索引擎
  • 成都医院网站建设域名是什么 有什么用
  • 街道口做网站拉新app推广接单平台
  • 如何制作网站视频发表文章的平台有哪些
  • 怎么在网站做谷歌广告传统营销与网络营销的区别
  • 做网站有一行一行写代码的吗抖音关键词挖掘工具
  • 找券网站怎么做英文外链seo兼职在哪里找
  • 郑州市建设厅网站百度指数特点
  • 做网站需要会写代码6软文广告素材
  • 动态ip怎么建设网站关键词推广方式
  • 商城网站要怎样设计seo网站优化服务商
  • 广告公司网站源码百度做推广一般要多少钱
  • 网络游戏排行榜2020前十名北京网站优化体验
  • wordpress iplaysoft湖南seo优化报价
  • 溧阳网站开发百度一下你就知道网页
  • 做拼多多网站赚钱吗seo优化课程
  • wordpress导入json南昌seo排名
  • 如何做自己的独立的网站百度营销官网
  • 一番赏公众号开发国内好的seo
  • 高端网站制作模板软件开发工具
  • 亿建联网站是谁做的武汉网络推广平台
  • 融资网站建设重点站长工具麻豆
  • 网站找图片做海报侵权醴陵网站制作
  • 网站搭建设计 是什么seo深圳培训班
  • 页面设计时最好用多少种颜色武汉seo招聘信息