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);
      }
   }
}

BW Insultami 09:27, Nov 29, 2004 (UTC)

ERRORI ???

Credo che ci siano diversi errori in questo articolo, ma non sono in grado di fare una correzione globale, inoltre vorrei sentire qualche opinione (nel frattempo lo inserisco tra gli articoli da controllare). Credo che la descrizione dell'algoritmo sia errata (confrontare con la versione inglese per esempio, che invece ritengo corretta). Poi l'implementazione in C e in Basic sono differenti (IMHO è corretta quella in basic, mentre quella in C rispecchia la descrizione e quindi è anch'essa errata). Fortran e Java mi sembrano sostanzialmente corretti (forse con qualche piccolo bug). Sugli altri linguaggi non sono in grado di esprimermi. Che ne pensate? DanGarb 18:22, Lug 20, 2005 (CEST)

Ho modificato la descrizione è il programma in C. DanGarb 08:43, Lug 21, 2005 (CEST)

Ritorna alla pagina "Bubble sort".