Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Προγραμματισμός Java

Συγχώνευση Ταξινόμηση σε Java Code

Διαλογή λίστες των δεδομένων παρουσιάζει ένα από τα πιο δύσκολα προβλήματα για προγραμματιστές υπολογιστών , επειδή είναι δύσκολο να συλλάβουμε και εφαρμογή αποτελεσματικών αλγορίθμων ταξινόμησης σε γλώσσες προγραμματισμού . Διαλογής απαιτεί σημαντική αντιγραφή, μετακίνηση και την ανάγνωση των δεδομένων να εργαστούν . Ως εκ τούτου , οι προγραμματιστές επικεντρώνονται στην ανάπτυξη αποτελεσματικών και γενικά αλγορίθμων ταξινόμησης. Ένα από αυτά , το είδος συγχώνευσης , λειτουργεί διαιρώντας μια λίστα τιμών ξανά και αναδρομικά με το " διαίρει και βασίλευε» το πρόβλημα . Από τη συγχώνευση είδος προορίζεται ως μια γενική λύση , οι περισσότερες γλώσσες , συμπεριλαμβανομένης και της Java , έχει τρόπους για να την εφαρμόσουν . Συγχώνευση Class
Η

Μια συγχώνευση είδος παίρνει μια λίστα που πρέπει να ταξινομηθούν και αναδρομικά χωρίζει τη λίστα μέχρι να φτάσουν τις τιμές της μονής , όπως η ενιαία αριθμούς . Το είδος ξαναενώνεται τους αριθμούς σε ταξινομημένη σειρά , για να επιστρέψει τελικά μια ταξινομημένη λίστα . Μια βασική κατηγορία διαλογής Java θα περιέχει μια λίστα για να ταξινομήσετε , και να καλέσετε έναν κύριο συγχώνευση λειτουργία ταξινόμησης ορίζει :

Συγχώνευση τάξη {

public int [ ] x ?

δημόσια στατική άκυρη κύρια ( String [ ] args ) {

x = [ 5 , 6 , 3 , 4 , 7 , 8 , 10 , 2 ] ?

Mergesort ( x , 0 , x . μήκος - 1 ) ?

} }
εικόνων Merge Sort λειτουργία
Η

Έξω από την κύρια κατηγορία , θα κατοικούν λειτουργία συγχώνευσης ταξινόμησης . Αυτή η λειτουργία τμημάτων σε μια περιοχή αριθμών για να ταξινομήσετε τη λίστα . Αρχικά , αυτή η περιοχή θα αποτελέσει ολόκληρη τη λίστα , αλλά όπως το είδος συγχώνευσης συνεχίζεται , θα πάρει μόνο το μισό της λίστας μέχρι να φτάσει ενιαία καταχωρήσεις . Στη συνέχεια , η λειτουργία συγχώνευσης είδος θα ανασυνδυάζεται τα στοιχεία σε μεγάλες λίστες που έχουν ταξινομηθεί ( Πηγή 2 ) :

public void Mergesort ( int χαμηλή , int hi ) {

αν ( χαμηλή εικόνων
Βασική λειτουργία συγχώνευση
Η

Η λειτουργία συγχώνευσης θα συνδυάσει δύο λίστες μετά τη διαλογή τους . Εάν η λειτουργία δέχεται απλά στοιχεία , θα τα παραγγείλετε . Διαφορετικά , θα χρειαστούν δύο χωριστούς καταλόγους , και ανάλογα με την επιθυμία της τάξης προγραμματιστή τους σε αύξουσα ή φθίνουσα σειρά :

συγχώνευσης private void ( int χαμηλά , μέσα int , int hi ) {

int [ ] copy = new int [ x.length - 1 ] ?

//Αντιγραφή δύο μέρη στη συστοιχία βοηθός για ( int i = χαμηλή ? i <= hi ? i + + ) { αντίγραφο [ i ] = x [ i ] ? }

int i = χαμηλή? int j = 1 + μέσα ? int k = χαμηλή? while ( i <= mid && j <= hi ) {if ( αντίγραφο [ i ] <= αντιγράψετε [ j ] ) { x [ k ] = αντιγράψετε [ i ] ? i + + ? } else { x [ k ] = αντιγράψετε [ ι ] ? j + + ? } k + + ? } //αντιγράψτε το υπόλοιπο από την αριστερή πλευρά του πίνακα σε πίνακα , ενώ στόχος ( i <= mid) { x [ k ] = αντιγράψετε [ i ] ? k + + ? i + + ? } }


Η
Merge Sort Recurse
Η

Η λειτουργία " Mergesort " χωρίζει αναδρομικά τη λίστα . Πρώτον, χωρίζει την αρχική λίστα στο μισό για κάθε φορά που καλεί τον εαυτό της αναδρομικά . Όταν η αναδρομή φθάνει σε ένα μονοψήφιο αριθμό , η λειτουργία στη συνέχεια υπαναχωρεί και αρχίζει να διατάξει τη λίστα . Κάθε φορά που η λειτουργία υπαναχωρεί σε μια προηγούμενη κλήση της συνάρτησης , συγχωνεύει δύο μισά του ένα μικρότερο κατάλογο , τελικά εργάζονται πίσω στον πλήρη κατάλογο . Η " συγχώνευση" λειτουργία φαίνεται να κάνει τη βαριά ανύψωση με την προετοιμασία και την αντιγραφή τιμές στη λίστα , αλλά η καρδιά του ένα είδος συγχώνευσης είναι το απατηλά απλό λειτουργία " Mergesort " .
Εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα