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: 38423
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-2020 v.1.5 | design: diviXdesign & rainbowcolors