Сортировка слияния означает сортировку, разделив и победить:
(1) разделите массив на два небольших массива и сортируют их отдельно;
(2) затем объедините отдельные массивы хорошо отсортированных заказов;
Кода -копия выглядит следующим образом:
импортировать java.util.scanner;
открытый класс Mergesort {
int [] a = null;
int [] b = null;
int n;
Сканер SIN = NULL;
Mergesort ()
{
a = new Int [10000];
b = новый int [10000];
sin = новый сканер (System.in);
}
void sort (int start, int end) // sort a [start ... end]
{
int mid;
if (start> = end) // Когда есть только один элемент, верните напрямую напрямую
возвращаться ;
еще
{
mid = (end-start)/2;
сортировка (старт, старт+mid);
сортировка (start+mid+1, end);
// объединить два заказанные массивы A [Start ... Start+Mid] и [Start+Mid+1 ... End]
Merge (Start, Start+Mid, End);
}
}
Void Merge (Int Start, Int Mid, Int End) // Комбинация
{
int t = start;
int i = start, j = mid+1;
while (i <= mid && j <= end)
{
if (a [i] <a [j])
b [t ++] = a [i ++];
еще
b [t ++] = a [j ++];
}
пока (я <= середина)
b [t ++] = a [i ++];
while (j <= end)
b [t ++] = a [j ++];
for (i = start; i <= end; i ++) // Напишите отсортированный содержимое обратно в соответствующую позицию массива a
a [i] = b [i];
}
void run ()
{
System.out.print («Введите количество чисел, которые будут отсортированы:»);
n = sin.nextint ();
для (int i = 0; i <n; i ++)
a [i] = sin.nextint ();
сортировка (0, n-1);
System.out.println («Результат сортировки:»);
// введите данные, которые будут отсортированы
для (int i = 0; i <n; i ++)
System.out.println (a [i]+"");
}
public static void main (string [] args) {
новый Mergesort (). run ();
}
}