集册 Java实例教程 实现堆排序

实现堆排序

欢马劈雪     最近更新时间:2020-01-02 10:19:05

534
提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
实现堆排序
class Heap_Sort

{

    // Conquer

    public static void Heapify(int[] array, int root, int size)
    /**
     from
    * n o w    j a v a  . c o m 
    **/

    {

        int left = 2 * root + 1, largest;

        int right = left + 1, temp;


        if(left < size && array[left] > array[root])

            largest = left;

        else

            largest = root;
            /*
            n o w j a v a . c o m
            */


        if(right < size && array[right] > array[largest])

            largest = right;


        if(largest != root)

        {

            temp = array[root];

            array[root] = array[largest];

            array[largest] = temp;

            Heapify(array, largest, size);

        }

    }


    // Divide array into halves

    public static void Build_Heap(int[] array, int size)

    {

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

            Heapify(array, i, size);

    }


    public static void HeapSort(int array[], int size)

    {

        Build_Heap(array, size);

        int temp, i;


        for(i = size - 1; i > 0; i--)

        {

            temp = array[0];

            array[0] = array[i];

            array[i] = temp;

            Heapify(array, 0, i);

        }

    }


    // function ro print array

    public static void Print_Array(int[] array, int size)

    {

        for(int i = 0; i <
展开阅读全文