Merge

Merge

$ dart 05_recursion/merge.dart
import 'dart:io';

class MergeApp {
  static void merge(List<int> arrayA, int sizeA, List<int> arrayB, int sizeB, List<int> arrayC ) {
    int aDex = 0, bDex = 0, cDex = 0;
    while (aDex < sizeA && bDex < sizeB) {
      if (arrayA[aDex] < arrayB[bDex]) {
        arrayC[cDex ++] = arrayA[aDex ++];
      } else {
        arrayC[cDex ++] = arrayB[bDex ++];
      }
    }
    while (aDex < sizeA) {
      arrayC[cDex ++] = arrayA[aDex ++];
    }
    while (bDex < sizeB) {
      arrayC[cDex ++] = arrayB[bDex ++];
    }
  }
  static void display(List<int> array, int size) {
    for (int i = 0; i < size; i ++) {
      stdout.write('${array[i]} ');
    }
    stdout.writeln();
  }
}

void main(List<String> args) {
  List<int> arrayA = <int>[23, 47, 81, 95];
  List<int> arrayB = <int>[7, 14, 39, 55, 62, 74];
  List<int> arrayC = new List<int>(10);

  MergeApp.merge(arrayA, arrayA.length, arrayB, arrayB.length, arrayC);
  MergeApp.display(arrayC, 10);
}