code: private void reverseMergeArray()
      {
          for(int i = 0; i < merges.length/2; i++)
          {
              int tmp = merges[i];
              merges[i] = merges[merges.length-i-1];
              merges[merges.length-i-1] = tmp;
          }
      }
docs: Reverses the merge array so that the front contains the last merges instead of the first.
  This is done so that creating new clusters is accessed in order which is cache friendly. <br>
  This method must be called once before using {@link #assignClusterDesignations(int[], int) }