Merge -Sortierung bedeutet Sortierung durch Teilen und Eroberung:
(1) Teilen Sie ein Array in zwei kleine Arrays und sortieren Sie sie separat;
(2) dann die getrennten Arrays gut sortierter Ordnungen zusammenführen;
Die Codekopie lautet wie folgt:
import Java.util.scanner;
öffentliche Klasse Mergesort {
int [] a = null;
int [] b = null;
int n;
Scanner sin = null;
Mergesort ()
{
a = neu int [10000];
B = neuer int [10000];
sin = neuer Scanner (System.in);
}
void sort (int start, int ende) // sortieren ein [Start ... Ende]
{
int in Mid;
if (start> = Ende) // Wenn nur ein Element vorhanden ist, kehren Sie direkt zurück
zurückkehren ;
anders
{
Mid = (End-Start)/2;
sortieren (Start, Start+Mitte);
sortieren (Start+Mid+1, Ende);
// Kombinieren Sie zwei bestellte Arrays A [Start ... Start+Mid] und A [Start+Mid+1 ... Ende]
zusammenführen (Start, Start+Mid, Ende);
}
}
Void Merge (int start, int Mid, int End) // Kombination
{
int t = start;
int i = start, j = Mid+1;
while (i <= Mid && j <= Ende)
{
if (a [i] <a [j])
b [t ++] = a [i ++];
anders
b [t ++] = a [j ++];
}
während (i <= mid)
b [t ++] = a [i ++];
while (j <= Ende)
b [t ++] = a [j ++];
für (i = start; i <= end; i ++) // Schreiben Sie den sortierten Inhalt zurück in die entsprechende Position des Array A.
a [i] = b [i];
}
void run ()
{
System.out.print ("Geben Sie die Anzahl der zu sortierenden Zahlen ein:");
n = sin.nextint ();
für (int i = 0; i <n; i ++)
a [i] = sin.nextint ();
sortieren (0, n-1);
System.out.println ("Sortierungsergebnis ist:");
// Geben Sie die zu sortierenden Daten ein
für (int i = 0; i <n; i ++)
System.out.println (a [i]+"");
}
public static void main (String [] args) {
New Mergesort (). Run ();
}
}