Не все языки программирования поддерживают вызов по ссылке.Например, последний способ выполнения swap
не применим к Java.
В книгах, содержащих псевдокод, обычно существует соглашение, что массивы и указатели не копируются при передаче, а все остальное копируется ввызов функции.Первый способ не требует специального объяснения о том, как передаются аргументы.
Что касается вашего последнего пункта о чистоте, то он не так уж и отличается: в первом случае ваш вызов swap будет просто: swap(i, j, a);
, тогда какв последнем случае вам нужно будет swap(a[i], a[j]);
, введя несколько скобок в выражение.