Advertisement
shek_shek

Сортировка слиянием

Sep 13th, 2014
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.67 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Solution {
  4.  
  5.  
  6.     public static void main(String[] args) {
  7.         Scanner scan = new Scanner(System.in);
  8.         int[] a = new int[15];
  9.         for (int i = 0; i < a.length; i++)
  10.             a[i] = scan.nextInt();
  11.         int ans[] = myMergeSort(a);
  12.         for (int i = 0; i < ans.length; i++)
  13.             System.out.print(ans[i] + " ");
  14.     }
  15.  
  16.     public static int[] myMergeSort(int[] x) {
  17.         if (x.length == 1)
  18.             return x;
  19.         int mid = x.length / 2;
  20.         int[] left = new int[mid];
  21.         for (int i = 0; i < left.length; i++)
  22.             left[i] = x[i];
  23.         int[] right = new int[x.length - mid];
  24.         for (int i = 0; i < right.length; i++)
  25.             right[i] = x[mid + i];
  26.         int[] res = myMerge(myMergeSort(left), myMergeSort(right));
  27.         return res;
  28.     }
  29.  
  30.     private static int[] myMerge(int[] a, int[] b) {
  31.         int ia = 0, ib = 0, i = 0;
  32.         int[] res = new int[a.length + b.length];
  33.         while (ia != a.length || ib != b.length) {
  34.             if (ia == a.length) {
  35.                 res[i] = b[ib];
  36.                 ib++;
  37.                 i++;
  38.                 continue;
  39.             }
  40.             if (ib == b.length) {
  41.                 res[i] = a[ia];
  42.                 ia++;
  43.                 i++;
  44.                 continue;
  45.             }
  46.             if (a[ia] < b[ib]) {
  47.                 res[i] = a[ia];
  48.                 ia++;
  49.                 i++;
  50.                 continue;
  51.             }
  52.             if (a[ia] >= b[ib]) {
  53.                 res[i] = b[ib];
  54.                 ib++;
  55.                 i++;
  56.             }
  57.         }
  58.         return res;
  59.     }
  60.  
  61.  
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement