Как написать обмен местами элементов в массиве?
В методе swap нужно написать так код, чтобы когда я задавал определенные числа a и b (позиции в массиве), он менял их местами. Например, массив 9 2 3 5 8 8 8 8 3 4. Я задаю 1 и 2 - это значит, что числа на этих позициях меняются друг с другом. То есть становится 9 3 2 5 8 8 8 8 3 4.
public class App {
int[] arr = new int[10];
void start() {
sluchaynoye();
print();
swap(0, 1);
}
void print() { //
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
int ran() { //
return (int) (Math.random() * 10);
}
void sluchaynoye() { //
for (int i = 0; i < arr.length; i++) {
arr[i] = ran();
}
}
void swap(int a, int b) {
}
}
Ответы (2 шт):
Автор решения: azlov
→ Ссылка
void swap (int a, int b) {
int c = arr[a]; // записываем первонач. значение arr[a] в переменную с
arr[a] = arr[b]; // в arr[a] записываем arr[b]
arr[b] = c; // в arr[b] записываем с (первонач. значение arr[a])
}
Автор решения: Дмитрий
→ Ссылка
В нормальном виде это должно выглядеть так :
public class App {
private final int[] arr;
public static void main(String[] args) {
//рандомный массив на 10 элементов, минимальное значение чисел в массиве - 0, максимальное - 10
App app = new App(10, 0, 10);
//а можем создать экземпляр класса, работающий с массивом, который мы передаем в конструкторе, а не с рандомным
//App app = new App(new int[]{5,3,1,0,8});
//выводим в консоль, для этого переопределяем метод toString()
System.out.println(app);
app.swap(0, 1);
System.out.println(app);
}
public App(int[] arr) {
this.arr=arr;
}
public App(int size, int origin, int bound) {
this(new java.util.Random().ints(size, origin, bound).toArray());
}
public void swap(int index1, int index2) {
int tmp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = tmp;
}
@Override
public String toString() {
//поскольку для массива метод toString() не переопределен, используем утилитный метод вывода массива в консоль
return java.util.Arrays.toString(arr);
}
}
если что-то непонятно - задавайте вопросы