堆排序算法在Java中的实现

来源:互联网 发布:淘宝美工详情页模板 编辑:程序博客网 时间:2024/06/08 18:20
package pers.yue.algoflow;/** * Created by yue on 10/19/16. */public class Heap {    static int HEAPSIZE;    public static void maxHeapify(int[] array, int i) {        // index starts from 0;        int l = 2 * i + 1;        int r = 2 * i + 2;        int largest;        if (l <= HEAPSIZE && array[l] > array[i]) {            largest = l;        } else {            largest = i;        }        if (r <= HEAPSIZE && array[r] > array[largest]) {            largest = r;        }        if (largest != i) {            int temp = array[i];            array[i] = array[largest];            array[largest] = temp;            maxHeapify(array, largest);        }    }    public static void buildMaxHeap(int[] array) {        // index starts from 0;        HEAPSIZE = array.length - 1;        for (int i = (array.length - 1) / 2; i >= 0; i--) {            maxHeapify(array, i);        }    }    public static void heapSort(int[] array) {        buildMaxHeap(array);        for (int i = array.length - 1; i > 0; i--) {            int temp = array[i];            array[i] = array[0];            array[0] = temp;            HEAPSIZE--;            maxHeapify(array, 0);        }    }}
0 0
原创粉丝点击