Java 实现堆排序(大跟堆、小根堆)
发布日期:2021-06-27 04:25:04 浏览次数:7 分类:技术文章

本文共 1485 字,大约阅读时间需要 4 分钟。

public class HeapSort {
public static void buildHeap(int[] nums){
int N = nums.length; for(int i=N/2-1;i>=0;i--){
// adjustMaxHeap(nums,i); adjustMinHeap(nums,i); } } public static void adjustMaxHeap(int[] nums,int parent){
int largestIndex = parent; int leftIndex = parent * 2 + 1; int rightIndex = leftIndex + 1; if(leftIndex < nums.length && nums[largestIndex] < nums[leftIndex]){
largestIndex = leftIndex; } if(rightIndex < nums.length && nums[largestIndex] < nums[rightIndex]){
largestIndex = rightIndex; } if(largestIndex != parent){
int tmp = nums[parent]; nums[parent] = nums[largestIndex]; nums[largestIndex] = tmp; adjustMaxHeap(nums,largestIndex); } } public static void adjustMinHeap(int[] nums,int parent){
int minIndex = parent; int leftIndex = parent * 2 + 1; int rightIndex = leftIndex + 1; if(leftIndex < nums.length && nums[minIndex] > nums[leftIndex]){
minIndex = leftIndex; } if(rightIndex < nums.length && nums[minIndex] > nums[rightIndex]){
minIndex = rightIndex; } if(minIndex != parent){
int tmp = nums[parent]; nums[parent] = nums[minIndex]; nums[minIndex] = tmp; adjustMinHeap(nums,minIndex); } }}

转载地址:https://blog.csdn.net/weixin_42166320/article/details/108240555 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java 实现字典树 增加、删除、查找 简单易懂!
下一篇:采用jmeter对接口进行压测(对比采用Guava缓存前后)

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月24日 22时05分05秒