Я перемешивал массив Java без использования Collections, по рабоче-крестьянски, поскольку условия задачи не позволяло. Вот что получилось:
| Код | public static void main(String[] args) { int[] m = {-3, -6, -2, -3, -3, -3, 2, 7, 7, 10, 5, 2}; // Этот массив будем перемешивать. for (int i = 0; i < m.length; i++) { System.out.print(m[i] + " ");} System.out.println(); // Объявляем буферный массив такой же длины как у "m" (у меня: 12), // автоматически массив заполняется нулями. int[] n = new int[12]; // {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} int h = 0; // Счётчик. // Чтобы в дальнейшем избежать конфликта со сравнением с нулём, // заполняем массив любыми числами не входящими в интервал длины массива. // В моём случае, я заполнил всё числами - 12 (n.length). for (int p = 0; p < n.length; p++) { n[p] = n.length;} // {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12} for (int i = 0; i < m.length; i++) { // Генерация псевдослучайного числа из интервала [0; 11]. int k = (int)(Math.random() * m.length); // Сравнение двух массивов for (int j = 0; j < m.length; j++) { if (k == n[j]) { // если число уже было, то заменим его псевдослучайным k = (int) (Math.random() * n.length); j = -1; }} n[h] = k; h++; System.out.print(m[k]+" "); }}
|
|