Hello everybody!
I would like to ask some help regarding one swap algorithm I am doing. The algorithm need to swap all elements of the array with every possible combination of the elements of it. I am stuck trying to get the best possible time complexity for this algorithm, but I cannot do better than O(N raised to 2). I am running out of ideas. The algorithm I have is the following:
Code:
import java.math.*;
class SwapAlgo {
public int main(int[] A) {
int l=0,k=0;
for (l=0 ; l < A.length ; l++){
for (k = l+1 ; k < A.length ; k++){
int [] A_aux = A;
int num_aux = A_aux[l];
A_aux [l] = A_aux[k];
A_aux[k]=num_aux;
}
}
}
My question is, is there any swap algorithm with better time complexity? In this case O(N).
Thank you very much!
[EDIT: Matt T Heffron -- moved up from improper "Solution"]
Thankls for the reply.
What I ment about "swap all elements of the array with every possible combination of the elements of it" is, for example, having array [3,-6,2,1]
I want to swap every element with in every possible way, that means:
Swap element in the position 0 with element in the position 1 (3,-6)
Swap element in the position 0 with element in the position 2 (3, 2)
Swap element in the position 0 with element in the position 3 (3, 1)
Swap element in the position 1 with element in the position 2 (-6, 2)
Swap element in the position 1 with element in the position 3 (-6, 1)
And the last swap element in the position 2 with element in the position 3 (2, 1)
For that I need to do two loops in order to check the array (like I am doing in the program). What Im asking if there is any more optimal way in order to achieve a O(N) time complexity (mine is O(N2) because the two loops for.
Thanks