private int[] merge(int[] arr1, int[] arr2) {
    // новый массив для результата
    int[] array = new int[arr1.length + arr2.length];
    int idx = 0;
    int idx1 = 0;
    int idx2 = 0;
    while (idx1 < arr1.length && idx2 < arr2.length) {
      // добавить в массив меньший элемент с начала
      int elem;
      countOperation++;
      if (arr1[idx1] < arr2[idx2]) {
        elem = arr1[idx1];
        idx1++;
      } else {
        elem = arr2[idx2];
        idx2++;
      }
      array[idx] = elem;
      idx++;
    }
    // добавить в массив остающиеся элементы
    while (idx1 < arr1.length) {
      array[idx] = arr1[idx1];
      idx1++;
      idx++;
    }
    while (idx2 < arr2.length) {
      array[idx] = arr2[idx2];
      idx2++;
      idx++;
    }
    return array;
  }