Loading:


    Metoda sortowania - Sortowanie przez Scalanie - Merge Sort [JAVA]

    Skrypt ukazuje jak wygląda oraz jak działa metoda sortowania typu Merge Sort (Sortowanie przez Scalanie. Kod ten można wykorzystać do sortowania liczb.



    Napisz Artyku³

    Listing


    package sorting;

    /**
     * @author Funkcje.net
     */

    public class SortowaniePrzezScalanie {


            public void sortowanie(Comparable[] items) {
                    Comparable[] temp = new Comparable[items.length];
                    mergeSort(items,temp,0,items.length-1);
            }


            private void mergeSort(Comparable[] a, Comparable[] temp,
                                                      int left, int right )
            {

                    if (left < right)
                    {
                            int center = (left+right)/2;
                            mergeSort(a,temp,left,center);
                            mergeSort(a,temp,center+1,right);
                            scalanie(a,temp,left,center+1,right);
                    }
            }
           
            private void scalanie(Comparable[] a, Comparable[] temp,
                                              int left,int center,int right)
            {
                    int aptr=left;
                    int bptr=center;
                    int cptr=0;
                    while (aptr<center || bptr<=right)
                    {       
                            if (aptr>=center && bptr <=right)
                            {
                                    temp[cptr]=a[bptr++];
                            } else if (bptr>right && aptr <= center) {
                                    temp[cptr]=a[aptr++];
                            } else {
                                   
                                    if (a[aptr].compareTo(a[bptr])<0)
                                    {
                                            temp[cptr]=a[aptr];
                                            aptr++;
                                    } else {
                                            temp[cptr]=a[bptr];
                                            bptr++;
                                    }
                            }
                           
                            cptr++;
                    }

                    for (int i=left; i<=right; i++)
                    {
                            a[i]=temp[i-left];
                    }
            }
           
           
            private void debugPrint(Comparable[]a,int left, int right)
            {
                    for (int i=left; i<=right; i++)
                    {
                            System.out.print(a[i]+" ");
                    }
                    System.out.println();
            }
    }
     




    Dodano przez: divix
    Ranga: Administrator serwisu Punktów: 0
    Komentarze użytkowników
      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors