How to compare n number of m-dimensional points among one another with minimum time complexity? Suppose there are four points (n = 4) which are four dimensional (m = 4) . Lets say these points are : A(4,1,1,1) , B(3,2,1,1) , C(2,3,3,3) , D(1,4,4,4). What is the best data structure to compare all points among one another based on their values in corresponding dimensions ? Aim is to have minimum time complexity . (Practically n >> m ). The mentioned comparison is carried out to check whether points are mutually non-dominated or not. Example : 


A(4,1) and B(5,6) -> B dominates A since (5>4) and (6>1) . Therefore, A and B are not mutually non-dominated.
C(4,1) and D(2,3) -> D doesn't dominate C ,since (3>1) but (2&lt;4) . Similarly C also doesn't dominate D ,since (4>2) but (1&lt;3) . Therefore, C and D are mutually non-dominated.


(Note : In general, if (X>=Y) -> X dominates Y )

Goal is to check for non-dominance among all possible combinations of points from the given set of points with minimum time complexity . With four points A, B, C, D possible combinations are AB, AC, AD, BC, BD, CD . If ALL of these six combinations are mutually non-dominated , then it can be concluded that given set of points are mutually non-dominated, else dominated. 

Input : Set of points, Task : Check for non-dominance among all possible combination of points from the given set of points , Output : If ALL combinations are mutually non-dominated , print ('set of points are mutually non-dominated') . Else print ('set of points are not mutually non-dominated') .

I have taken a 2-D array for this purpose . For n points which are m-dimensional , I have used a (n * m) matrix and compared each row with every other row to check for non-dominance among rows. Suppose if points are : A(4,1,1,1) , B(3,2,1,1) , C(2,3,3,3) , D(1,4,4,4) , then matrix is : x[4][4] = { {4,1,1,1}, {3,2,1,1}, {2,3,3,3}, {1,4,4,4} } . Here the time complexity is : O(m * n * n).

(Note :In this method , each row of matrix is representing one point )

Is there any better approach which results lesser time complexity ?
So you suggested the basic technique of checking all pairs which is $O(mn^2)$. Here are some things you can try first, at lower complexity, before falling back to an approach with a similar worst-case bound but likely better constants.

We represent each point $p_i = (x^i_1, \dots, x^i_m)$.

Then clearly there is a dominated pair if $\min_i \max_j x^i_j \leq \max_i \min_j x^i_j$. The time to evaluate this is $O(mn)$.

Next, we sort the points $m$ times, by each dimension. Let $r^i_j$ and $R^i_j$ be the indexes at which $p_i$ appears in each list (in range $[0,n)$), where the $r$ values have tie-breaks resolved down and $R$ values have tie-breaks resolved up, respectively. In other words, considering the values $3, 5, 5, 6$. Then the $r$ and $R$ values for the two points having $5$ would be $1$ and $2$. The time to evaluate this is $O(mn \log n)$, before we check conditions.

If $\min_i \max_j R^i_j \leq \max_i \min_j r^i_j$, then there is a dominated pair. The additional time to evaluate this is $O(mn)$ leaving the total time as $O(mn \log n)$.

Next, let $w_i = \sum_j r^i_j$ and $W_i = m(n-1) - \sum R^i_j$. Note that $w_i$ is an upper bound on the number of points that can't dominate $p_i$. Similarly, $W_i$ is an upper bound on the number of points that $p_i$ can't dominate. Thus, if $\min_i w_i &lt; n - 1$ or $\min_i W_i &lt; n - 1$, then there must be a dominated pair. The additional time to evaluate this is $O(mn)$ leaving the total time as $O(mn \log n)$.

Finally, as a fallback, for each point $p_i$ we know there are at most $\min_j R^i_j$ points which $p_i$ can dominate. Thus, knowing which list each $p_i$ obtained its minimum $R^i_j$ can give us a shorter list of points to check. The time here is still $O(mn^2)$ in the worst case, but the constant will be better than all pairs.