当前位置: 代码迷 >> J2SE >> 高手讲解下算法导论中.解决办法
  详细解决方案

高手讲解下算法导论中.解决办法

热度:124   发布时间:2016-04-24 02:18:09.0
高手讲解下算法导论中...
【堆排序法and线性时间排序】并写下java的代码,小弟初学的..添加个注释....谢谢了...

------解决方案--------------------
- -网上一搜不是一大把
------解决方案--------------------
Java code
    // 堆排序    public static void heapSort(int[] arr) {        for (int i = arr.length / 2; i >= 0; i--) {            maxHeap(arr, i, arr.length);        }        for (int i = arr.length - 1; i >= 1; i--) {            arr[0] ^= arr[i];            arr[i] ^= arr[0];            arr[0] ^= arr[i];            maxHeap(arr, 0, i);        }    }    // 建最大堆    private static void maxHeap(int[] arr, int index, int end) {        int q;        while (index < end) {            q = 2 * index + 1;            if (q >= end)                break;            if ((q < end - 1 && (arr[q + 1] > arr[q])))                q = q + 1;            // 如果某一节点的值小于其子节点的最大值,将其交换            if (arr[q] > arr[index]) {                arr[q] ^= arr[index];                arr[index] ^= arr[q];                arr[q] ^= arr[index];                index = q;            } else {                break;            }        }    }
  相关解决方案