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

网站需求西安 h5网站建设

网站需求,西安 h5网站建设,网上开店电商平台有哪些,网站开发如何支持ipv6简介 堆排序是一种基于二叉堆数据结构的排序算法#xff0c;它的特点是不同于传统的比较排序算法#xff0c;它是通过建立一个堆结构来实现的。堆排序分为两个阶段#xff0c;首先建立堆#xff0c;然后逐步将堆顶元素与堆的最后一个元素交换并调整堆#xff0c;使得最大…  简介 堆排序是一种基于二叉堆数据结构的排序算法它的特点是不同于传统的比较排序算法它是通过建立一个堆结构来实现的。堆排序分为两个阶段首先建立堆然后逐步将堆顶元素与堆的最后一个元素交换并调整堆使得最大或最小元素逐步沉到堆的末尾完成排序。 堆的概念 堆是一种特殊的树状数据结构其中每个节点的值大于等于或小于等于其子节点的值。是一个平衡二叉树。最大堆每个节点的值都大于或等于其子节点的值。最小堆每个节点的值都小于或等于其子节点的值。 堆排序步骤 构建堆 将待排序的数组构建成一个二叉堆。 最大堆构建 从数组的中间位置开始从右至左从下至上进行堆调整。最小堆构建 从数组的中间位置开始从右至左从下至上进行堆调整。 堆排序 通过反复将堆的根节点最大或最小值与堆的最后一个元素交换并重新调整堆实现排序。 最大堆排序 将堆顶元素与堆的最后一个元素交换然后将堆的大小减1并重新调整堆。最小堆排序 类似于最大堆排序但是每次选择堆中的最小元素。 堆排序的代码示例最大堆排序 public class HeapSort {public static void main(String[] args) {int[] arr {3, 8, 2, 5, 1, 4, 7, 6};heapSort(arr);for (int i : arr) {System.out.print(i );}}public static void heapSort(int[] arr) {for (int i (arr.length -1)/ 2 ; i 0; i--) {adjustHeap(arr, i, arr.length);}int temp;for (int j arr.length - 1; j 0; j--) {temp arr[j];arr[j] arr[0];arr[0] temp;adjustHeap(arr, 0, j);}}public static void adjustHeap(int[] arr, int i, int length) {int 父节点 arr[i];for (int k i * 2 1; k length; k k * 2 1) {if (k 1 length arr[k] arr[k 1]) {k;}//k左右孩子较大的一个if (arr[k] 父节点) {arr[i] arr[k];i k;} else {break;}}arr[i] 父节点;}} 详细讲解 这段代码实现了堆排序Heap Sort算法。我将为你逐段解释代码的功能。 初始化数组: int[] arr {3, 8, 2, 5, 1, 4, 7, 6}; 这行代码定义了一个整数数组 arr并初始化了8个数值。 2. 调用堆排序方法:  heapSort(arr); 这行代码调用了 heapSort 方法并将数组 arr 作为参数传递。 3. 打印排序后的数组: for (int i : arr) { System.out.print(i ); } 这段代码遍历数组 arr 并打印每个元素。此时数组应该已经被排序所以输出的应该是排序后的数组1 2 3 4 5 6 7 8 。 4. 堆排序方法: 堆排序方法分为两个主要部分建立最大堆和交换堆顶元素与最后一个元素然后调整堆。  * **建立最大堆**: javafor (int i (arr.length -1)/ 2 ; i 0; i--) { adjustHeap(arr, i, arr.length); } 这段循环遍历数组的索引从 (arr.length -1)/ 2 到 0并对每个索引调用 adjustHeap 方法来调整堆。 * **交换和调整堆**: javafor (int j arr.length - 1; j 0; j--) { temp arr[j]; arr[j] arr[0]; arr[0] temp; adjustHeap(arr, 0, j); } 这段循环每次从数组的末尾开始将堆顶元素最大值与最后一个元素交换然后重新调整堆。这样最大的元素会逐渐移到数组的末尾。 5. 调整堆方法: 这个方法负责调整堆以满足最大堆的特性。如果父节点的值小于其子节点的值那么就需要交换它们。这个方法会一直递归地检查和调整直到满足最大堆的条件为止。 6.主类HeapSort这是整个程序的容器它包含 main 方法和其他辅助方法。 好的我继续为您解释这段代码。 7.adjustHeap方法详解: public static void adjustHeap(int[] arr, int i, int length) { int 父节点 arr[i]; // 获取当前节点的值并将其称为父节点 for (int k i * 2 1; k length; k k * 2 1) { // 循环遍历左孩子节点右孩子节点 if (k 1 length arr[k] arr[k 1]) { // 如果右孩子的值大于左孩子的值 k; // 则将k移动到右孩子的位置 } //k左右孩子较大的一个 if (arr[k] 父节点) { // 如果当前节点大于父节点 arr[i] arr[k]; // 用当前节点的值替换父节点的值 i k; // 将i设置为当前节点的索引 } else { break; // 如果当前节点不大于父节点则跳出循环 } } arr[i] 父节点; // 将父节点的值设置回父节点位置 } 这段代码的主要目的是确保堆的属性在调用该方法后得到满足。它从给定的索引 i 开始并确保该索引下的子节点是最大的。如果子节点的值小于父节点则交换它们。这个过程会继续直到满足堆的属性为止。 总结这段代码实现了一个堆排序算法。它首先构建一个最大堆然后通过交换堆顶元素与最后一个元素来排序数组。每次交换后它都会重新调整堆以确保其属性得到满足。
http://www.zqtcl.cn/news/899575/

相关文章:

  • 无锡网站建设制作设计wordpress news list
  • 专业建站教程青海 网站开发 图灵
  • 济南网站公司哪家好中国建设银行电脑版
  • 企业网站建设定制网站建设成功案例怎么写
  • 一个网站做数据维护3天正常吗做sgs认证公司网站
  • 免费网络短剧网站摄影素材库网站
  • 如何做竞价网站数据监控网站建设企业的市场分析
  • 电脑做网站主机空间软件开发工作岗位
  • 计算机多媒体辅助教学网站开发响应式网站建设精英
  • 免费网站空间怎么做网站主持人
  • 开源建站系统有哪些网站信息化建设合同
  • 昆明云南微网站淄博专业网站建设
  • 古典网站源码海南app开发
  • 自己做网站前期困难吗怎么早网站上放广告
  • 建设银行招标网站南昌网站建设公司信息
  • 网站建设与管理专业介绍湖南长沙邮政编码
  • 社区论坛系统免费开源seo网站诊断报告
  • 网站LOGO透明底色PNG格式怎么做的开发一款游戏需要多少资金
  • 网站推广营销策略北京东直门网站建设
  • 制作公司网站需要购买域名和服务器吗聊城做企业网站
  • 大连网站建设价格低做校招的网站有哪些
  • 电脑端网站和手机网站区别做的好的营销型网站有哪些内容
  • 长沙市做网站网站建设 全是乱码
  • ps做网站原形系统学做网站
  • 接网站 建设wordpress 打开慢 google
  • wordpress 移动 建站网站前台如何做访问量显示
  • 公司做网站买域名之后做什么打鱼网站开发
  • 南京市城乡建设局网站二级建造师证件查询
  • 百度关键词优化系统网站优化师招聘
  • 网站方案建设书推广产品的软文怎么写