您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法
堆排序(图文)
第十三双眼睛2023-10-20【数据结构与算法】人已围观
简介堆排序
堆排序
package com.xingchen.day010; import java.util.Arrays; public class HeapSort { public static void main(String[] args) { int[] arr = {4,6,8,5,9,1,-85,1000}; heapSort(arr); } public static void heapSort(int[] arr) { int temp = 0; //分布完成 //adjust(arr, 1, arr.length); //System.out.println(Arrays.toString(arr)); //adjust(arr,0,arr.length); //System.out.println(Arrays.toString(arr)); for (int i = arr.length/ 2 -1; i>= 0 ;i --) { adjust(arr,i,arr.length); } for (int j= arr.length - 1; j>0;j --) { //交换 temp = arr[j]; arr[j] = arr[0]; arr[0] = temp; adjust(arr, 0, j); } System.out.println(Arrays.toString(arr)); } public static void adjust(int[] arr,int i,int length) { //i表示非叶子节点的索引 //length表示对多少个元素进行调整 int temp = arr[i]; for (int k = i * 2 + 1; k<length; k = 2 * k + 1) { if (k + 1 < length && arr[k] < arr[k+1]) {//说明左子节点的值小于右子节点的值 k ++; } if (arr[k] > temp) { arr[i] = arr[k]; i = k; } else { break; } } //当for循环结束后,已经将i为父节点为最大值放在了最顶上 arr[i] = temp; } } |
Tags:
很赞哦! ()
上一篇:线索化二叉树(图文)
下一篇:赫夫曼树(图文)
相关文章
随机图文
-
插入排序法(图文)
插入排序法 -
有效的括号(图文)
有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 -
路径总和(图文)
路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 -
二叉树的后序遍历(图文)
二叉树的后序遍历 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。