21xrx.com
2025-07-16 14:30:28 Wednesday
文章检索 我的文章 写文章
Java实现堆排序算法
2023-06-14 16:08:57 深夜i     14     0
Java 堆排序 代码实现

堆排序是排序算法中比较高效的一种,它利用了堆这种数据结构的特点,在实现上比较简单。在Java中,我们同样可以用堆来实现排序算法。下面让我们一起来看看Java实现堆排序算法的代码案例。

代码实现:

/**
* 堆排序
* @param nums 待排序数组
* @return 排序后的数组
*/
public static int[] heapSort(int[] nums) {
  buildHeap(nums);
  for (int i = nums.length - 1; i >= 1; i--) {
    swap(nums, 0, i);
    heapify(nums, 0, i);
  }
  return nums;
}
/**
* 建堆
*/
private static void buildHeap(int[] nums) {
  int len = nums.length;
  for (int i = len / 2; i >= 0; i--) {
    heapify(nums, i, len);
  }
}
/**
* 调整堆
*/
private static void heapify(int[] nums, int idx, int heapSize) {
  int left = idx * 2 + 1;
  int right = idx * 2 + 2;
  int largest = idx;
  if (left < heapSize && nums[left] > nums[largest])
    largest = left;
  
  if (right < heapSize && nums[right] > nums[largest])
    largest = right;
  
  if (largest != idx) {
    swap(nums, idx, largest);
    heapify(nums, largest, heapSize);
  }
}
/**
* 交换数组元素
*/
private static void swap(int[] nums, int i, int j) {
  int temp = nums[i];
  nums[i] = nums[j];
  nums[j] = temp;
}

通过这段代码,我们可以看到,Java实现堆排序算法并不复杂,只需要几个方法就可以完成整个算法。

关键词:

Java、堆排序、代码实现

  
  

评论区