Разворот массива в обратную сторону

Разворот массива в обратную сторону

Задача такова. Дается массив из n чисел. Требуется перевернуть его и вывести все числа в обратном порядке.

int n;
int arr[100];

cin >> n;

for (int i = 0; i < n; i++)
cin >> a[i];

for (int i  = 0; i < n / 2; i++)
swap(a[i], a[n — i — 1]);

for (int i = 0; i < n; i++)
cout << a[i] << ‘ ‘;

Прежде чем разбирать код, нужно разобраться с функцией swap(a, b); Функцияswap(a, b) меняет между собой значения переменных a и b. Например изначально a и b были равны 5 и 10 соответственно. Тогда после swap(a, b) a будет равно 10, а b равно 5.

Еще стоит отметить, что n / 2 — это целочисленное деление. При целочисленном делении дробная часть отбрасывается. То есть 5 / 2 = 2.

Итак, во втором цикле мы начинаем менять элементы в массиве. Сначала меняем 0 c n — 1, потом 1 с n — 2 и т.д. Так мы делаем n / 2 раз. Если сделать такую операцию не n / 2, а n раз, тогда массив просто перевернется еще раз и придет в исходное положение.

Пример.

n = 6.

Массив: 4 3 9 8 1 0

Шаг 1 — 0 3 9 8 1 4
Шаг 2 — 0 1 9 8 3 4
Шаг 3 — 0 1 8 9 3 4

Итак, получили перевернутый массив.

1Комментарий

  • rom

    Ответить 06.10.2013 02:27

    что то не работает код в вашей статьи у меня
    можене написать весь скилет программы пожалуйсто

Оставить комментарий