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

帮忙做公司网站莱芜金点子信息港电子版官网

帮忙做公司网站,莱芜金点子信息港电子版官网,wordpress站点是什么,网站因为备案关闭了 怎么办目录 1. 算法介绍 2. 执行流程⭐⭐⭐⭐⭐✔ 3. 代码实现 4. 性能分析 1. 算法介绍 堆是一种数据结构#xff0c;可以把堆看成一棵完全二叉树#xff0c;这棵完全二叉树满足#xff1a;任何一个非叶结点的值都不大于(或不小于)其左右孩子结点的值。若父亲大孩子小#x…目录 1. 算法介绍 2. 执行流程⭐⭐⭐⭐⭐✔ 3. 代码实现 4. 性能分析 1. 算法介绍 堆是一种数据结构可以把堆看成一棵完全二叉树这棵完全二叉树满足任何一个非叶结点的值都不大于(或不小于)其左右孩子结点的值。若父亲大孩子小则这样的堆叫作大顶堆;若父亲小孩子大则这样的堆叫作小顶堆。 根据堆的定义知道代表堆的这棵完全二叉树的根结点的值是最大(或最小)的因此将一个无序序列调整为一个堆就可以找出这个序列的最大(或最小)值然后将找出的这个值交换到序列的最后(或最前)这样有序序列关键字增加1个无序序列中关键字减少1个对新的无序序列重复这样的操作就实现了排序。这就是堆排序的思想。 堆排序中最关键的操作是将序列调整为堆。整个排序的过程就是通过不断调整使得不符合堆定义的完全二叉树变为符合堆定义的完全二叉树。 2. 执行流程⭐⭐⭐⭐⭐✔ 建堆是先从自下而上从右往左建 初始堆的每一个结点都要满足堆的定义也就是父节点的值大于左右孩子结点的值 选出最大值是将根结点和最后一个结点互换然后继续构建大顶堆 ⭐⭐⭐堆顶和最后一个元素交换才算一趟也是该趟的最终序列结果 建堆和排序结果是两个阶段但同属于一趟中。 图示如下 3. 代码实现 为了三个步骤 步骤一先建堆大根堆或者小根堆 步骤二交完堆顶和最后一个元素然后堆的大小减一 步骤三向下调整堆 步骤一只需实现一次步骤二和步骤三循环执行得到最终的有序序列。 //开始排序堆排序分为三个功能 ①开始建堆②交换③向下调整重复②和③步public static void heapSort(int[] array,int len){int end len - 1;//确定最后一个结点的下标createHeap(array);//建堆//当只剩下一个结点的时候就不需要交换while(end 0){//交换swap(array,0,end);//向下调整shiftDown(array,0,end);//调整完一个结点下一个end--;}}//交换数据public static void swap(int[] array,int i,int j){int tmp array[i];array[i] array[j];array[j] tmp;}//堆排序大根堆//从上往下建堆所以先找父节点再找孩子结点public static void createHeap(int[] array){for(int parent (array.length - 1 - 1) / 2;parent 0;parent--){shiftDown(array,parent,array.length);}}//向下调整public static void shiftDown(int[] array,int parent,int len){//定义一个记录孩子下标的变量左孩子int child 2 * parent 1;//判断父节点和孩子结点的大小至少左孩子要存在while(child len){//比较左右孩子if((child 1) len array[child] array[child 1]){child;}//判断父节点和孩子节点if(array[child] array[parent]){swap(array,child,parent);parent child;child 2 * parent 1;}else{break;}}}public static void main(String[] args) {int[] a {5,4,3,2,1};Sort.heapSort(a, a.length);for (int x : a) {System.out.print(x );}} 4. 性能分析 时间辅助度空间复杂度O(N*logN)O(1)数据不敏感数据不敏感 稳定性不稳定。 来上解析怎么计算这个时间复杂度。 1步骤一的时间复杂度首先知道有N个结点开始建堆这个时间复杂度就是O(N)大家可以去看看这篇文章里面有讲建堆的时间复杂度。链接如下 数据结构——堆、堆排序和优先级队列代码为Java版本 2步骤二和步骤三循环的时间复杂度那么我第一个结点交换时需要向下调整为log(N - 1)层交换第二个结点后需要向下log(N - 2)接下来就是log(N - 3)log(N - 4)……log1。所以总的调整次数是log(N - 1) log(N - 2) log(N - 3) log(N - 4) …… log1 log((N - 1)!)。 我们可以在网上看到堆排序的时间复杂度是O(N*logN)这是堆排序的大致估算我们算时间复杂度都是算个大概其实log((N - 1)!) 约等于 NlogN。下面是我的证明结果 ① 使用夹逼准则证明 先求上限 再求下限: 因为  所以  当  时                ② 则有 ③结论 既是  的低阶函数又是  的高阶函数因此是  的同阶函数 3由于上面的证明步骤我们可以知道堆排序的时间复杂度是   。
http://www.dnsts.com.cn/news/146902.html

相关文章:

  • 成都地铁建设分公司网站精品网站建设多少钱
  • 长安网站优化wordpress配置ftp服务器
  • 自建网站推广方式在线logo制作网站
  • 做网站还赚钱吗百度快速排名软件
  • 网站建设如何推广业务免费空间贴吧
  • 网站域名 评估作价公司seo营销
  • 江苏建信建设集团网站p2p网站制作流程
  • 怎么做网站域名指向外卖网站建设方案书
  • 做网站开发哪种语言更稳定高效肥乡县建设局网站
  • 网站建设费 大创seo顾问是干什么
  • 郑州的网站建设公司有哪些t恤在线定制
  • 禹城市住房和城乡建设局网站文网文许可证
  • 建筑网站大全豆丁网适合注册公司的名字大全
  • 郑州做网站好米能花型设计师服务平台
  • 免费建设网站设计页面建个网站需要多少钱一个
  • 西瓜编程网站怎么做asp.net做电商网站页面
  • 网站建设存在的具体问题论坛网站方案
  • 杭州网站建设交易wordpress 文章标题
  • 重要的龙岗网站建设百度提交网址
  • 网站建设案例欣赏网站设计学的科目
  • 烟台网站制作方案定制wordpress twig
  • 哪个网站POS机网站怎么做
  • 新能源课件网站开发新能源大连网站专业制作
  • 购买域名后怎么建网站网站点击快速排名
  • 隆昌住房和城乡建设官方网站创立网站成本
  • 传媒公司商业计划书wordpress百度seo
  • 建一个展示网站下班多少钱软文广告经典案例800字
  • 配置网站开发建筑网招工网
  • 建设银行城东支行网站注册域名需要实名认证吗
  • 网站模块图片尺寸大型房产网站模板