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

php电子商务网站开发旅游网站论文摘要

php电子商务网站开发,旅游网站论文摘要,企业年报系统,网站建设步骤 优帮云目录 一、引言二、算法步骤三、原理演示步骤1: 构建最大堆步骤2: 交换和堆化步骤3: 排序完成 四、代码实战五、结论 一、引言 堆排序是一种利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构#xff0c;并同时满足堆积的性质#xff1a;即子结点的键值或… 目录 一、引言二、算法步骤三、原理演示步骤1: 构建最大堆步骤2: 交换和堆化步骤3: 排序完成 四、代码实战五、结论 一、引言 堆排序是一种利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构并同时满足堆积的性质即子结点的键值或索引总是小于或者大于它的父节点。 二、算法步骤 堆排序的核心是建立和维护一个二叉堆通常是一个最大堆Max Heap或最小堆Min Heap。在最大堆中根节点的值是最大的而在最小堆中根节点的值是最小的。堆排序的基本思路如下 构建最大堆将未排序的数组构建成一个最大堆。这通常需要从最后一个非叶子节点开始逐步向前调整使整个数组满足最大堆的性质。交换和堆化将最大堆的根节点与最后一个元素交换然后减小堆的大小即排除最后一个元素再对根节点进行堆化操作以保持最大堆的性质。重复步骤2重复执行步骤2直到堆的大小减小到1排序完成。 三、原理演示 堆排序是一种基于二叉堆数据结构的排序算法它通过构建和维护一个最大堆或最小堆来对数组进行排序。在这里我将动态说明堆排序的实现过程以帮助您更好地理解它。 步骤1: 构建最大堆 假设我们有一个未排序的整数数组作为输入。第一步是将这个数组构建成一个最大堆确保堆的性质每个父节点的值都大于或等于其子节点的值。初始数组 [4, 10, 3, 5, 1] 构建最大堆的过程 从数组的中间元素开始即索引为 n/2 - 1这是最后一个非叶子节点。从这个节点向前遍历执行堆化操作。 [4, 10, 3, 5, 1] 堆化过程从根节点开始比较它与其子节点的值如果子节点的值更大则交换它们然后继续堆化子节点。 [10, 4, 3, 5, 1] 继续堆化直到整个数组成为最大堆。 步骤2: 交换和堆化 在第一步完成后我们已经构建了一个最大堆其中根节点包含最大的元素。现在我们将根节点与最后一个元素交换将最大元素放到正确的位置。交换和堆化的过程 交换根节点和最后一个元素 [1, 4, 3, 5, 10] 减小堆的大小排除最后一个元素。 对根节点进行堆化操作以保持最大堆性质。 [5, 4, 3, 1] 重复步骤1和步骤2直到堆的大小减小到1排序完成。 步骤3: 排序完成 最终堆排序完成数组中的元素按升序排列。 排序完成的数组 [1, 3, 4, 5, 10] 这就是堆排序的整个过程。它的时间复杂度为O(nlogn)具有稳定性适用于大型数据集的排序。堆排序的核心是构建和维护堆确保最大或最小元素位于根节点然后将根节点与数组末尾的元素交换并逐渐减小堆的大小。 四、代码实战 下面我们使用java演示一下堆排序的过程: public class HeapSort {public static void main(String[] args) {int[] arr {12, 11, 13, 5, 6, 7};int n arr.length;System.out.println(原始数组);printArray(arr);heapSort(arr);System.out.println(排序后的数组);printArray(arr);}public static void heapSort(int[] arr) {int n arr.length;// 构建最大堆for (int i n / 2 - 1; i 0; i--) {heapify(arr, n, i);}// 逐个提取元素并排序for (int i n - 1; i 0; i--) {int temp arr[0];arr[0] arr[i];arr[i] temp;heapify(arr, i, 0);}}public static void heapify(int[] arr, int n, int i) {int largest i;int left 2 * i 1;int right 2 * i 2;if (left n arr[left] arr[largest]) {largest left;}if (right n arr[right] arr[largest]) {largest right;}if (largest ! i) {int swap arr[i];arr[i] arr[largest];arr[largest] swap;heapify(arr, n, largest);}}public static void printArray(int[] arr) {for (int value : arr) {System.out.print(value );}System.out.println();} }上述代码演示了堆排序的实现。它首先定义了一个包含整数数组的示例然后调用 heapSort 方法来对数组进行排序。heapSort 方法首先构建一个最大堆然后进行排序。heapify 方法用于维护最大堆的性质。 五、结论 我们一起来总结一下 堆排序是一种选择排序的变种它将待排序序列划分成若干个子序列每个子序列都满足堆积的性质即子序列的最大值或最小值位于其顶部。堆排序的时间复杂度为O(nlogn)其中n表示待排序序列的长度。这是因为堆排序需要将序列构造成堆这需要O(nlogn)的时间复杂度然后需要依次取出每个元素这需要O(n)的时间复杂度。堆排序的空间复杂度为O(1)。这是因为堆排序只需要在内存中使用常数级别的额外空间来完成排序。堆排序是原地排序算法也就是说它不需要额外的存储空间除了用于存储待排序序列本身的存储空间之外。堆排序是稳定的排序算法也就是说它保持了相同元素的相对顺序。堆排序适用于大规模数据的排序特别是当内存空间有限时因为它只需要常数级别的额外空间。堆排序算法的实现比较简单但理解和掌握它需要对数据结构和算法有较深入的理解。 点赞收藏富婆包养✋✋
http://www.yutouwan.com/news/410062/

相关文章:

  • 龙岗中心城网站建设大连大家营销
  • 网站建设的法律问题wordpress格子主题
  • 信息化建设 调查报告 乡镇网站怎么样做网站赚钱
  • 学院网站建设服务招生宣传成都网站建设设计公司
  • 翻译做网站wordpress 时光网主题
  • 山东电商网站建设南昌启航科技
  • 石材网站模板阿里云服务器可以做彩票网站吗
  • 网站等保如何做院系网站建设具体要求
  • 网站三大要素是什么意思深圳专业集团网站建设
  • 做html网站搜索框教程建站之星演示
  • 工信部网站实名认证怎么做wordpress如何看网页地址
  • 微网站 .net四川建设网官网登录
  • 贵州省建设厅二建报名网站wordpress文章增加新字段
  • 哪个网站可以查企业信息wordpress term_id
  • 最新网站建设的模板下载wordpress widgetkit
  • 网站的空间是服务器吗星空视频大全免费观看下载
  • 天马网络 网站建设网络服务提供者发现用户利用其网络
  • 做网站页面的软件手机端视频网站模板
  • 上海网站搜索优化做网站找哪家好 07月
  • 承接婚庆公司网站建设有口碑的装修设计公司
  • 网站版权信息模板网站建设程序员
  • 虚拟主机子网站龙岗模板网站建设
  • excel+表格+做的网站盘点国内免费云服务器
  • 招聘网站上找在家做做外汇看哪些网站数据
  • 深圳做电商平台网站建设广州专业网站制作平台
  • 宿迁做网站哪家公司好机械技术支持东莞网站建设
  • 心悦dnf免做卡网站php大流量网站开发规范
  • 校企合作网站建设长宁微信手机网站制作
  • 中山网站上排名logo图标素材网站
  • 大型商城网站建设方案wordpress 一站多主题