Optimal merge pattern

 


import java.util.ArrayList;

import java.util.Comparator;


class mergePattern {

 int TotalTimeComputation=0;

 ArrayList<Integer> data = new ArrayList<>();

 mergePattern(int []data) {

  for (int e : data) {

   this.data.add(e);

  }

  doStuff();

 }


 void doStuff() {

  System.out.println("Optimal merge pattern for given data \n");

  for (int e : data) {

   System.out.print(" " + e);

  }

  while (data.size() > 1) {


   System.out.println("\n");

   data.sort(Comparator.naturalOrder());

   int sum = data.get(0)+ data.get(1);

   TotalTimeComputation = TotalTimeComputation + sum;

   data.add(sum);

   data.remove(0);

   data.remove(0);

   data.sort(Comparator.naturalOrder());

   for (int e : data) {

    System.out.print(" " + e);

   }

  }

 }

}

class work {

 public static void main(String args[]) {

  int data[] = {3, 5, 9, 11, 16, 18, 20};

  mergePattern obj = new mergePattern(data);

  System.out.println("\n total time Computation is "+ obj.TotalTimeComputation);

 }

}

Comments