Книга: Одномерные массивы
}
2.3 Перестановка двух элементов массива
Для перестановки двух элементов массива x[] с индексами k и m , необходимо использование дополнительной переменной (tmp ) , для хранения копии одного из элементов (рисунок 2.3 а), но можно обойтись и без использования дополнительной переменной tmp . В этом случаи алгоритм перестановки имеет следующий вид (рисунок 2.3 б).
В большинстве случаев предпочтительнее использовать первый способ, поскольку он не содержит дополнительных вычислений, что особенно важно при перестановке вещественных чисел.
tmp=x[k]; x[k]=x[m]; x[m]=tmp; |
x[k]=x[k]+x[m]; x[m]=x[k]-x[m]; x[k]=x[k]-x[m]; | ||
(а) | (б) |
Рисунок 2.3 Алгоритм и фрагмент программы перестановки двух элементов массива c использованием дополнительной переменной (а) и без нее (б)
Пример 2.1
Переставить первый и последний элемент массива x[] местами. Количество элементов массива n .
Решение
В С нумерация элементов массива начинается с нуля, поэтому номер последнего элемента массива (n –1) .
1 способ: tmp=x[0]; x[0]=x[n-1]; x[n-1]=tmp;
2 способ: x[0]=x[0]+x[n-1]; x[n-1]=x[0]-x[n-1]; x[0]=x[0]-x[n-1];
Пример 2.2
Поменять местами заданный элемент массива x[k] с последующим.
Решение
При решении этой задачи необходимо учитывать, что если заданный элемент массива x[k] является последним, то обмен выполнить не возможно, поскольку последующий элемент отсутствует.
if(k == n-1) puts("Обмен не возможен."); else { tmp=x[k]; x[k]=x[k+1]; x[k+1]=tmp; } |
Рисунок 2.4 Алгоритм и фрагмент программы перестановки заданного элемент массива x[k] с последующим
При перестановке с предыдущим элементом, обмен невозможен если заданный элемент является первым (k=0 ).
2.4 Вычисление суммы элементов массива
Часто возникают задачи, требующие вычислить сумму всех или некоторых элементов массива, например, сумму элементов, стоящих в массиве на заданных местах, или сумму элементов, удовлетворяющих некоторому условию (сумму только положительных элементов, сумму ненулевых элементов второй половины массива и т.д.).