首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2012-01-30 
高手讲解下算法导论中...【堆排序法and线性时间排序】并写下java的代码,小弟初学的..添加个注释....谢谢了..

高手讲解下算法导论中...
【堆排序法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;            }        }    } 

热点排行