A classificação de mesclagem significa classificar dividindo e conquistando:
(1) Divida uma matriz em duas pequenas matrizes e classifique -as separadamente;
(2) em seguida, mescla as matrizes separadas de ordens bem classificadas;
A cópia do código é a seguinte:
importar java.util.scanner;
classe pública Mergesort {
int [] a = null;
int [] b = nulo;
int n;
Scanner sin = nulo;
Mergesort ()
{
a = novo int [10000];
b = novo int [10000];
sin = novo scanner (System.in);
}
Void Class
{
int mid;
if (start> = end) // Quando houver apenas um elemento, retorne diretamente
retornar ;
outro
{
MID = (start final)/2;
classificar (iniciar, começar+médio);
classificar (iniciar+médio+1, final);
// Combine duas matrizes ordenadas A [Start ... Start+Mid] e um [Start+Mid+1 ... End]
mesclar (Start, Start+Mid, End);
}
}
Merge void (int start, int mid, int end) // combinação
{
int t = start;
int i = start, j = mid+1;
while (i <= mid && j <= end)
{
if (a [i] <a [j])
b [t ++] = a [i ++];
outro
b [t ++] = a [j ++];
}
enquanto (i <= meio)
b [t ++] = a [i ++];
while (j <= fim)
b [t ++] = a [j ++];
para (i = start; i <= end; i ++) // Escreva o conteúdo classificado de volta à posição correspondente da matriz a
a [i] = b [i];
}
Void Run ()
{
System.out.print ("Digite o número de números a serem classificados:");
n = sin.nextInt ();
para (int i = 0; i <n; i ++)
a [i] = sin.nextInt ();
classificar (0, n-1);
System.out.println ("O resultado da classificação é:");
// Digite os dados a serem classificados
para (int i = 0; i <n; i ++)
System.out.println (a [i]+"");
}
public static void main (string [] args) {
new Mergesort (). Run ();
}
}