1

I just wanted to know what is the best way to un-order the elements in an ordered array in Java, Thanks

Joaquín L. Robles
  • 5,888
  • 8
  • 60
  • 91

3 Answers3

6

I think you want Collections.shuffle(List)? If not that, you will need to give us more details about what you're trying to do.

逆さま
  • 71,868
  • 14
  • 160
  • 174
  • And you can be fairly sure that the shuffle algorithm of the Collections.shuffle() is pretty good. The standard JavaSE api is incredibly well tested. (Whoa... didn't want to sound like a sell speech) – Eric-Karl Oct 14 '10 at 01:07
2

You want to shuffle that array using a good algorithm.

I would trust Collections#shuffle to implement this properly. If you need it to work on the array directly, implement the algorithm in your own helper method.

Thilo
  • 250,062
  • 96
  • 490
  • 643
1

I don't know much Java, so there may be better way, but this'll do the trick nicely.

Fisher-Yates shuffle from Wikipedia:

static Random rng = new Random();
public static void shuffle(int[] array) {
    // i is the number of items remaining to be shuffled.
    for (int i = array.length; i > 1; i--) {
        // Pick a random element to swap with the i-th element.
        int j = rng.nextInt(i);  // 0 <= j <= i-1 (0-based array)
        // Swap array elements.
        int tmp = array[j];
        array[j] = array[i-1];
        array[i-1] = tmp;
    }
}
spender
  • 112,247
  • 30
  • 221
  • 334