I've been trying to work this out:
Say I have an array:
int[] n = {0, 0, -1, 1, 0, 1, 1, -1, 1};
I need to be able to sort through the array and if there is a zero with a non zero preceding it, then they should be swapped.
For example: 0, 0, -1, 1, 0, 1, 1, -1, 1
will become: 0, 0, -1, 0, 1, 1, 1, -1, 1
I have been trying to do it using a for
loop and if
statements with no luck. Any tips?
Try this:
for (int i = 1 ; i < n.length ; i++)
if (n[i] == 0 && n[i - 1] != 0) {
int tmp = n[i - 1];
n[i - 1] = n[i];
n[i] = tmp;
}
You were right in thinking that you would need a for
loop with an if
statement in its body. All we're doing here is looping through the array starting at element 1. We then check if the element we're currently on is 0
and the previous element is not 0
: i.e. if (n[i] == 0 && n[i - 1] != 0)
. If this condition is true, we swap these two elements.