Сортировать кучу реализации в Java

Пирамидальная сортировка является одним из лучших на общие цели алгоритмов сортировки, своего рода сравнение и часть семьи рода отбор. Хотя несколько медленнее, на практике в большинстве машин, чем хорошая осуществление сортировки, она имеет преимущества в худшем случае-O (N журнал N) Runtime и быть на месте алгоритма. Пирамидальная сортировка не является стабильной рода.

Следующий код показывает, как реализовать кучу сортировки в Java.


    /**

     * Standard heapsort.

     @param a an array of Comparable items.

     */

    public static void heapsortComparable [ ] )

    {

        forint i = a.length / 2; i >= 0; i-- )  /* buildHeap */

            percDowna, i, a.length );

        forint i = a.length - 1; i > 0; i-- )

        {

            swapReferencesa, 0, i );            /* deleteMax */

            percDowna, 0, i );

        }

    }



    /**

     * Internal method for heapsort.

     @param i the index of an item in the heap.

     @return the index of the left child.

     */

    private static int leftChildint )

    {

        return * i + 1;

    }



    /**

     * Internal method for heapsort that is used in

     * deleteMax and buildHeap.

     @param a an array of Comparable items.

     * @index i the position from which to percolate down.

     * @int n the logical size of the binary heap.

     */

    private static void percDownComparable [ ] a, int i, int )

    {

        int child;

        Comparable tmp;



        fortmp = a]; leftChild< n; i = child )

        {

            child = leftChild);

            ifchild != n - && achild ].compareToachild + ] ) )

                child++;

            iftmp.compareToachild ] ) )

                a= achild ];

            else

                break;

        }

        a= tmp;

    }

    

    

    /**

     * Method to swap to elements in an array.

     @param a an array of objects.

     @param index1 the index of the first object.

     @param index2 the index of the second object.

     */

    public static final void swapReferencesObject [ ] a, int index1, int index2 )

    {

        Object tmp = aindex1 ];

        aindex1 = aindex2 ];

        aindex2 = tmp;

    }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>