de linuxmanr4, 4 años han pasado desde su publicación, escrito en Ruby.
Este código es una respuesta a Bubble Sort en Ruby de linuxmanr4
- ver diferencias
Enlace corto
http://gw.gd/Tush
Insertar vínculo
  1. #!/usr/bin/env ruby
  2.  
  3. # Aprendiendo ruby de mala manera.
  4. # ================================
  5. #
  6. # Algoritmo de ordenamiento de burbuja
  7. #
  8. # Aclaración:
  9. # Ruby es un lenguaje que tiene muchas ventajas, incluyendo metodos de
  10. # ordenamiento, sin embargo, como una forma de irme familiarizando con el
  11. # lenguaje haré algoritmos clásicos de ordenamiento.
  12. #
  13. # Si quieren conocer más detalles sobre este algoritmo, pueden consultar
  14. # la wikipedia http://en.wikipedia.org/wiki/Bubble_sort
  15. #
  16. # a y b son arreglos idénticos.
  17. #
  18. # autor: Francisco J. de la Torre (aka LinuxmanR4) web: http://linuxmar4.com
  19. # sáb 25 may 2013 12:19:30 CDT
  20. # Con observaciones de Gunnar Wolf. web: http://gwolf.org/
  21.  
  22. # Empezamos con el ordenamiento burbuja en el arreglo a.
  23. # ------------------------------------------------------
  24.  
  25. # El método swap sirve para intercambiar de posición los elementos de un arreglo.
  26. class Array
  27.     def swap(a,b)
  28.         self[a], self[b] = self[b], self[a]
  29.     end
  30. end
  31.  
  32. a = [99,86,48,16,82,50,25,62,8,45]  #Será ordenado mediante bubble sort
  33. b = [99,86,48,16,82,50,25,62,8,45]  #Al estilo Ruby
  34.  
  35. begin
  36.         intercambio = false
  37.         (a.count-1).times do |i|
  38.                 if a[i] > a[i+1]  # Si se cumple la condición, entonces intercambiamos.
  39.                         a.swap(i,i+1)
  40.                         intercambio = true
  41.                 end # if
  42.                 next
  43.         end # times
  44. end while intercambio == true # Este ciclo se ejecuta mientras haga intercambios.
  45.  
  46. # Llegó el momento de mostrar los resultados.
  47.  
  48. # Arreglo ordenado con bubble sort.
  49. # join lo uso para mostrar el arreglo separado por comas.
  50.  
  51. puts "a = " << a.join(" , ")
  52.  
  53. # Ahora la forma ruby.
  54. puts "b = " << b.sort.join(" , ")