21xrx.com
2024-12-23 00:13:33 Monday
登录
文章检索 我的文章 写文章
Java实现堆排序算法
2023-06-14 16:08:57 深夜i     --     --
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、堆排序、代码实现

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复