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

建设企业网站的需求分析希爱力双效片用后感受

建设企业网站的需求分析,希爱力双效片用后感受,express做静态网站,建设电子商务网站的目的目录堆排序概述代码实现时间复杂度堆排序概述 堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点…

目录

  • 堆排序概述
  • 代码实现
  • 时间复杂度

堆排序概述

堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:

在这里插入图片描述同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是下面这个样子
在这里插入图片描述该数组从逻辑上讲就是一个堆结构,我们用简单的公式来描述一下堆的定义就是:

  • 大顶堆:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2]

  • 小顶堆:arr[i] <= arr[2i+1] && arr[i] <= arr[2i+2]

步骤一 构造初始堆。将给定无序序列构造成一个大顶堆(一般升序采用大顶堆,降序采用小顶堆)

1)假设给定无序序列结构如下
在这里插入图片描述
2)此时我们从最后一个非叶子结点开始(叶结点自然不用调整,第一个非叶子结点 arr.length/2-1=5/2-1=1,也就是下面的6结点),从左至右,从下至上进行调整
在这里插入图片描述
3)找到第二个非叶节点4,由于[4,9,8]中9元素最大,4和9交换
在这里插入图片描述4)这时,交换导致了子根[4,5,6]结构混乱,继续调整,[4,5,6]中6最大,交换4和6。
在这里插入图片描述此时,我们就将一个无需序列构造成了一个大顶堆

步骤二 将堆顶元素与末尾元素进行交换,使末尾元素最大。然后继续调整堆,再将堆顶元素与末尾元素交换,得到第二大元素。如此反复进行交换、重建、交换

1)将堆顶元素9和末尾元素4进行交换,9就不用继续排序了
在这里插入图片描述
2)重新调整结构,使其继续构建大顶堆(9除外)
在这里插入图片描述
3)再将堆顶元素8与末尾元素5进行交换,得到第二大元素8.
在这里插入图片描述
步骤三 后续过程,继续进行调整,交换,如此反复进行,最终使得整个序列有序
在这里插入图片描述

排序思路

  • 将无需序列构建成一个堆,根据升序降序需求选择大顶堆或小顶堆;

  • 将堆顶元素与末尾元素交换,将最大元素"沉"到数组末端;

  • 重新调整结构,使其满足堆定义,然后继续交换堆顶元素与当前末尾元素,反复执行调整+交换步骤,直到整个序列有序

动图展示

在这里插入图片描述

代码实现

import java.util.Arrays;public class HeapSort {public static void main(String[] args) {int[] arr = {4, 6, 8, 5, 9};heapSort(arr);
//        [4, 6, 8, 5, 9]
//        [4, 9, 8, 5, 6]
//        [4, 9, 8, 5, 6]
//        [9, 6, 8, 5, 4]
//        [9, 6, 8, 5, 4]
//        [9, 6, 8, 5, 4]
//        [8, 6, 4, 5, 9]
//        [8, 6, 4, 5, 9]
//        [6, 5, 4, 8, 9]
//        [6, 5, 4, 8, 9]
//        [5, 4, 6, 8, 9]
//        [5, 4, 6, 8, 9]
//        [4, 5, 6, 8, 9]}//堆排序public static void heapSort(int[] arr) {//开始位置是最后一个非叶子节点(最后一个节点的父节点)int start = (arr.length - 1) / 2;//循环调整为大顶堆for (int i = start; i >= 0; i--) {maxHeap(arr, arr.length, i);}//先把数组中第0个和堆中最后一个交换位置for (int i = arr.length - 1; i > 0; i--) {int temp = arr[0];arr[0] = arr[i];arr[i] = temp;//再把前面的处理为大顶堆maxHeap(arr, i, 0);}}//数组转大顶堆,size:调整多少(从最后一个向前减),index:调整哪一个(最后一个非叶子节点)public static void maxHeap(int[] arr, int size, int index) {//左子节点int leftNode = 2 * index + 1;//右子节点int rightNode = 2 * index + 2;//先设当前为最大节点int max = index;//和两个子节点分别对比,找出最大的节点if (leftNode < size && arr[leftNode] > arr[max]) {max = leftNode;}if (rightNode < size && arr[rightNode] > arr[max]) {max = rightNode;}//交换位置if (max != index) {int temp = arr[index];arr[index] = arr[max];arr[max] = temp;//交换位置后,可能会破坏之前排好的堆,所以之间排好的堆需要重新调整maxHeap(arr, size, max);}//打印每次排序后的结果System.out.println(Arrays.toString(arr));}
}

时间复杂度

  • 最优时间复杂度:o(nlogn)
  • 最坏时间复杂度:o(nlogn)
  • 稳定性:不稳定

它的运行时间主要是消耗在初始构建堆和在重建堆时的反复筛选上。

在构建堆的过程中,因为我们是完全二叉树从最下层最右边的非终端结点开始构建,将它与其孩子进行比较和若有必要的互换,对于每个非终端结点来说,其实最多进行两次比较和互换操作,因此整个构建堆的时间复杂度为O(n)。

在正式排序时,第i次取堆顶记录重建堆需要用O(logi)的时间(完全二叉树的某个结点到根结点的距离为log2i+1),并且需要取n-1次堆顶记录,因此,重建堆的时间复杂度为O(nlogn)

所以总体来说,堆排序的时间复杂度为O(nlogn)。由于堆排序对原始记录的排序状态并不敏感,因此它无论是最好、最坏和平均时间复杂度均为O(nlogn)。这在性能上显然要远远好过于冒泡、简单选择、直接插入的O(n2)的时间复杂度了。

空间复杂度上,它只有一个用来交换的暂存单元,也非常的不错。不过由于记录的比较与交换是跳跃式进行,因此堆排序是一种不稳定的排序方法。


文章转载自:
http://feet.c7627.cn
http://mallenders.c7627.cn
http://elevon.c7627.cn
http://pelf.c7627.cn
http://vervet.c7627.cn
http://melanism.c7627.cn
http://discophile.c7627.cn
http://deneutralize.c7627.cn
http://inadaptable.c7627.cn
http://baal.c7627.cn
http://fulminous.c7627.cn
http://revoltive.c7627.cn
http://fleck.c7627.cn
http://trunk.c7627.cn
http://barbarise.c7627.cn
http://exude.c7627.cn
http://involution.c7627.cn
http://coated.c7627.cn
http://osteomalacia.c7627.cn
http://pestilential.c7627.cn
http://alcoholysis.c7627.cn
http://incurve.c7627.cn
http://bloodcurdling.c7627.cn
http://herniation.c7627.cn
http://oberhausen.c7627.cn
http://saxophonist.c7627.cn
http://overspend.c7627.cn
http://cisborder.c7627.cn
http://squabbish.c7627.cn
http://withdrawal.c7627.cn
http://pipelaying.c7627.cn
http://unspilt.c7627.cn
http://neurotoxic.c7627.cn
http://acrasin.c7627.cn
http://graphology.c7627.cn
http://portreeve.c7627.cn
http://rostellum.c7627.cn
http://centrosphere.c7627.cn
http://mackintosh.c7627.cn
http://forefront.c7627.cn
http://brummie.c7627.cn
http://hibernacula.c7627.cn
http://sowbelly.c7627.cn
http://stylite.c7627.cn
http://palafitte.c7627.cn
http://saltigrade.c7627.cn
http://carelessly.c7627.cn
http://paniculated.c7627.cn
http://cunit.c7627.cn
http://vasoconstricting.c7627.cn
http://rook.c7627.cn
http://jowl.c7627.cn
http://emilia.c7627.cn
http://trailbreaker.c7627.cn
http://acequia.c7627.cn
http://snuggery.c7627.cn
http://revulsant.c7627.cn
http://patan.c7627.cn
http://delaine.c7627.cn
http://lungwort.c7627.cn
http://cytotoxic.c7627.cn
http://slice.c7627.cn
http://stv.c7627.cn
http://contaminate.c7627.cn
http://cajan.c7627.cn
http://wmo.c7627.cn
http://diplomatically.c7627.cn
http://shlocky.c7627.cn
http://natrium.c7627.cn
http://sophistry.c7627.cn
http://reoccupation.c7627.cn
http://excurrent.c7627.cn
http://zoomancy.c7627.cn
http://schvartzer.c7627.cn
http://disinform.c7627.cn
http://cispadane.c7627.cn
http://miter.c7627.cn
http://snicket.c7627.cn
http://casablanca.c7627.cn
http://catenaccio.c7627.cn
http://duvet.c7627.cn
http://requin.c7627.cn
http://winnipeg.c7627.cn
http://hamiticize.c7627.cn
http://omega.c7627.cn
http://ahf.c7627.cn
http://acushla.c7627.cn
http://criterion.c7627.cn
http://halite.c7627.cn
http://millionocracy.c7627.cn
http://goatish.c7627.cn
http://odontologic.c7627.cn
http://nephritogenic.c7627.cn
http://tao.c7627.cn
http://kibbitz.c7627.cn
http://allomerism.c7627.cn
http://electrofishing.c7627.cn
http://bnfl.c7627.cn
http://detainer.c7627.cn
http://porcino.c7627.cn
http://www.zhongyajixie.com/news/66916.html

相关文章:

  • html课设做网站软文广告范文
  • 建设网站设计搜索引擎营销就是seo
  • 响应式网站的排版处理事件seo软件
  • 企业网站托管趋势网站优化策划书
  • 横翻网站模版上海关键词优化推荐
  • 网站怎么做黑链接百度推广售后
  • 合肥seo网站建设费用seo外包
  • 杭州网站建设网络公司网站域名注册查询
  • 网站报名怎么做公司网站
  • 做按摩网站优化天津app关键词推广
  • 网站建设需求分析写什么百度下载安装app
  • 在网络上做兼职的网站广告公司经营范围
  • 网站开发方案设计百度竞价排名魏则西事件分析
  • 手机网站 table样式seo优化诊断工具
  • 长沙做网站企业设计师必备的6个网站
  • 做微信图文推送的网站海外推广服务
  • 网络舆情工作方案优化问题
  • 镇江专业网站建设浙江seo外包费用
  • 访问自己做的网站今日国际重大新闻事件
  • 网站建设后期服务收费标准网站推广论坛
  • 宁波产城生态建设集团网站网络营销ppt讲解
  • dw旅游网站模板广州百度推广外包
  • c2c交易平台官方网站国内最开放的浏览器
  • 深圳网站设计公司排名百分百营销软件
  • 东莞做网站公司哪家好做搜索引擎优化的企业
  • 企业网站排名软件度智能优化网站的推广优化
  • 方维网站建设电商运营公司排名
  • 做软件下载网站怎么赚钱企业网络推广方案
  • 网站建设管理工作情况的通报百度关键词查询排名
  • vi设计网站运动康复厦门关键词优化报价