Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- public class MergeSort {
- public static void main(String[] args) {
- int[] a2 = {5,2,4,6,1,3,2,6};
- sort(a2);
- System.out.println(Arrays.toString(a2));
- }
- private static void sort(int[] a) {
- int[] aux = new int[a.length];
- sort(a, aux, 0, a.length - 1);
- }
- private static void sort(int[] a, int[] aux, int lo, int hi) {
- if (hi <= lo) {
- return;
- }
- int mid = lo + (hi - lo) / 2;
- sort(a, aux, lo, mid);
- sort(a, aux, mid + 1, hi);
- merge(a, aux, lo, hi, mid);
- }
- private static void merge(int[] a, int[] aux, int lo, int hi, int mid) {
- /*
- aux - вспомогательный массив
- а - начальный массив
- */
- System.arraycopy(a, lo, aux, lo, hi + 1 - lo);
- // расставляем переменные i j
- int i = lo;
- int j = mid + 1;
- //цикл от lo - hi
- for (int k = lo; k <= hi; k++) {
- if (i > mid) a[k] = aux[j++];
- else if (j > hi) a[k] = aux[i++];
- else if (Integer.compare(aux[j], (aux[i])) < 0) a[k] = aux[j++];
- else {
- a[k] = aux[i++];
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment