21xrx.com
2024-09-17 04:28:37 Tuesday
登录
文章检索 我的文章 写文章
Java实现堆排序算法代码案例,丰富你的算法基础
2023-06-15 17:02:58 深夜i     --     --
Java 堆排序 算法

堆排序是一种高效的排序算法,在处理大量数据时能够发挥出其优越性。Java语言天然支持面向对象编程特性,将其与堆排序结合,能够得到简洁而又高效的代码实现。

以下是一段Java实现的堆排序算法代码:


public class HeapSort {

  public static void sort(int[] arr) {

    int n = arr.length;

    // Build heap (rearrange array)

    for (int i = n / 2 - 1; i >= 0; i--)

      heapify(arr, n, i);

    // One by one extract an element from heap

    for (int i = n - 1; i >= 0; i--) {

      // Move current root to end

      int temp = arr[0];

      arr[0] = arr[i];

      arr[i] = temp;

      // call max heapify on the reduced heap

      heapify(arr, i, 0);

    }

  }

  // To heapify a subtree rooted with node i which is

  // an index in arr[]. n is size of heap

  static void heapify(int[] arr, int n, int i) {

    int largest = i; // Initialize largest as root

    int l = 2 * i + 1; // left = 2*i + 1

    int r = 2 * i + 2; // right = 2*i + 2

    // If left child is larger than root

    if (l < n && arr[l] > arr[largest])

      largest = l;

    // If right child is larger than largest so far

    if (r < n && arr[r] > arr[largest])

      largest = r;

    // If largest is not root

    if (largest != i) {

      int swap = arr[i];

      arr[i] = arr[largest];

      arr[largest] = swap;

      // Recursively heapify the affected sub-tree

      heapify(arr, n, largest);

    }

  }

}

以上代码实现了一个静态类HeapSort,提供了一种static方法sort,调用该方法可以将传入的int数组按照从小到大的顺序进行排序。

  
  

评论区

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