Начинающий программист реализовал сортировку выбором и пузырьковую сортировку. Обе они использовали одну функцию обмена элементов массива с помощью промежуточной переменной:
void swap(int i, int j) {
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
} //swap
Обе сортировки работают правильно (хотя пузырьковая раза в два медленнее).
Потом он узнал что обмен можно произвести без промежуточной переменной, с помощью операции побитового "исключающего или" и исправил функцию:
void swap(int i, int j) {
arr[i] ^= arr[j];
arr[j] ^= arr[i];
arr[i] ^= arr[j];
} //swap
Однако теперь он обнаружил что:
Обе сортировки перестали работать правильно
Сортировка выбором стала медленнее чем пузырьковая
Сортировка выбором перестала работать правильно
Пузырьковая сортировка перестала работать правильно