Discussione:Bubble sort
Lo XOR
Usare lo XOR nel C++ per scambiare dati è sconsigliato da qualunque manuale di buona programmazione: un compilatore ottimizzante fa meglio da solo. e poi esiste std::swap. Provvedo a modificare e metto qui il codice incriminato
template <class Type> void bubbleSort(Type *array, size_t length) { int i, j; for(i = length - 1; i > 0; i--) for(j = 0; j < i; j++) if(array[j] > array[j+1]) /* compara gli elementi vicini */ { array[j] ^= array[j+1]; // Usa XOR per scambiare i valori più velocemente, array[j+1] ^= array[j]; // ma solo quando sei sicuro array[j] ^= array[j+1]; // di poterlo fare (dipende dal tipo di dati) } } template<typename T> void bubble_sort(T *base, size_t n) { T *p, *q, t; while (n--) { for (q = (p = base) + 1; p < base + n; ++q, ++p) { (*p > *q) && (t = *p, *p = *q, *q = t); } } }