Ответ: конкретно так работать не будет, потому что переменная p в функции sort не объявлена.
А вообще, swap я написал для наглядности кода, он так понятнее.
Естественно, можно и в теле sort1/sort2 менять местами элементы массива - не возбраняется.

Остальное не глядел, работает, в принципе?