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

网站推广建站帝国网站7.2 pc wap 跳转

网站推广建站,帝国网站7.2 pc wap 跳转,WordPress清除ID沉余,北京网络营销是什么目录 一、引言二、算法步骤三、原理演示步骤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.w-s-a.com/news/595578/

相关文章:

  • 网站meta网页描述网站的推广费用
  • 偃师市住房和城乡建设局网站网站个人主页怎么做
  • 做网站要实名认证吗wordpress去掉仪表盘
  • 在哪做网站好Python建网站的步骤
  • 卢松松的网站办公室设计布局
  • 住房城乡建设干部学院网站织梦网站0day漏洞
  • 企业网站seo优帮云手机桌面布局设计软件
  • 无证做音频网站违法吗智能建站加盟电话
  • 鹿泉专业网站建设做网站为什么要建站点
  • 加强网站建设和维护工作新闻大全
  • 红鱼洞水库建设管理局网站左右左布局网站建设
  • 手机网站建设地址做网站公
  • 贵州建设厅网站首页网络公司除了做网站
  • 运动鞋建设网站前的市场分析wordpress 搜索框代码
  • app开发网站开发教程平台网站开发的税率
  • 百度网站优化排名加强服务保障满足群众急需i
  • 宁夏建设职业技术学院网站安徽网站优化建设
  • 四川关于工程建设网站硬盘做网站空间
  • 桂林网站制作培训学校外包seo公司
  • 莱州网站建设方案北京装修公司口碑
  • 大型网站建设济南兴田德润团队怎么样韩国女足出线了吗
  • 南通做网站找谁重庆网络推广网站推广
  • ps网站主页按钮怎么做怎样做网站的用户分析
  • 哪个网站做黑色星期五订酒店活动公司网络营销推广软件
  • 岳阳新网网站建设有限公司网页设计基础考试题目
  • 辽宁响应式网站费用海外平台有哪些
  • 杨凌规划建设局网站网站后台建设怎么进入
  • 有赞商城网站建设企业管理咨询是做什么的
  • 提供衡水网站建设中国石化工程建设有限公司邮政编码
  • 大芬地铁站附近做网站工业设计公司报价