Search code examples
javaarraysindexingswap

Swapping element in an array


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?


Solution

  • 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.