Discussione:Bubble sort

Versione del 29 nov 2004 alle 11:27 di Blakwolf (discussione | contributi)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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)

Ritorna alla pagina "Bubble sort".