Burbuja Sortive en Ruby -- ruby campo con sorting camp codereview Relacionados El problema

Bubble sort in Ruby


7
vote

problema

Español

Para la práctica, intenté implementar el tipo de burbuja en Ruby. No estaba muy seguro de lo anidado para los bucles en Ruby. ¿Es esta la 'forma correcta' para hacer esto en Ruby? Encontré este Pregunta , pero se ve mucho más complicada con las pilas.

  def bubble_sort(list)   n = list.length   n.downto(2) do |i|     0.upto(i-2) do |j|       if list[j] > list[j+1]         list[j],list[j+1] = list[j+1],list[j]       end     end   end   puts list end   

Este es el código que escribí en Python, que luego me traducí al código de Ruby arriba.

  def bubbleSort(alist):     n = len(alist)     for i in range(n, 1, -1):         for j in range(i-1):             if alist[j] > alist[j+1] :                 alist[j],alist[j+1] = alist[j+1],alist[j]   
Original en ingles

For practice, I tried implementing Bubble sort in Ruby. I wasn't very sure how nested for loops would look like in Ruby. Is this the 'right way' to do this in Ruby? I found this question, but it looks much more complicated with stacks.

def bubble_sort(list)   n = list.length   n.downto(2) do |i|     0.upto(i-2) do |j|       if list[j] > list[j+1]         list[j],list[j+1] = list[j+1],list[j]       end     end   end   puts list end 

This is the code I wrote in Python which I then translated into Ruby code above.

def bubbleSort(alist):     n = len(alist)     for i in range(n, 1, -1):         for j in range(i-1):             if alist[j] > alist[j+1] :                 alist[j],alist[j+1] = alist[j+1],alist[j] 
     
 
 

Lista de respuestas

3
 
vote

Una diferencia significativa entre las implementaciones de Python y Ruby es que el rubí imprime la lista ordenada al final. No debería, al igual que la versión de Python no. La función debe hacer una sola cosa, en este ejemplo, solo ordena.

Además, sugiero poner un espacio después de que comas separe las listas de variables, como esta:

  type_info9  

No sé mucho rubí, Pero no creo que un tipo de burbuja pueda obtener mejor que esto. Usted está utilizando expresiones idiomáticas similares a rubíes como type_index0 y type_index1 , Y el resto es claro, código recto. Cualquier cosa más inteligente de lo que esto sería demasiado inteligente para el propósito, En mi opinión.

Un pequeño comentario final sobre la implementación de Python: type_index2 Se recomienda para nombres de funciones en lugar de type_index3 .

 

A significant difference between your Python and Ruby implementations is that the Ruby one prints the sorted list at the end. It shouldn't, just like the Python version doesn't. The function should do just one thing, in this example just sort.

Also, I suggest to putting a space after commas separating variable lists, like this:

    list[j], list[j+1] = list[j+1], list[j] 

I don't know much Ruby, but I don't think a bubble sort can get any better than this. You are using nice Ruby-like idiomatic expressions like downto and upto, and the rest is clear, straight code. Anything more clever than this would be too clever for the purpose, in my opinion.

A tiny final remark about the Python implementation: snake_case is recommended for function names instead of camelCase.

 
 
0
 
vote

Me encantó la pregunta, pero no pensé en responderla hasta un poco antes de irme a la cama ...

... así que aquí están mis dos se necesitan en el código de clasificación de burbujas, incluido el código de prueba.

Actualizaré la respuesta con más información después de que dormí un poco, pero debería ser bastante directo.

Itimé la matriz usando un índice numérico hasta que no hay nada de qué ordenar, momento en el que me rompo de las iteraciones. En una versión, utilizo el type_index4 variable, mientras que en el siguiente uso una matriz temporal (permitiéndome que sea una implementación de una línea).

  type_index5  

buena suerte!

 

I loved the question, but didn't think to answer it until just a bit before I went to bed...

...So here are my two takes on the bubble sort code, including testing code.

I'll update the answer with more info after I slept a bit, but it should be quite straight forward.

I iterate the array using a numerical index until there is nothing to sort, at which point I break from the iterations. In one version I use the sorted variable, while in the next I use a temporary array (allowing me to make it a one-line implementation).

a = Array.new(100) {Random.rand 1000}   def bubble_sort!(array)     sorted = false     until sorted         sorted = true         (array.length-1).times { |i|  (sorted, array[i], array[i+1] = false, array[i+1], array[i]) if array[i] > array[i+1] }     end  end   def bubble_sort!(array)     break if ((array.length-1).times.with_object([]) { |i, r| (r << (array[i], array[i+1] = array[i+1], array[i])) if array[i] > array[i+1] }).empty? while true end   #testing  def array_sorted?(array)     r = (array.length-1).times.with_object([]) { |i, r| (array[i] > array[i+1]) ? (r << "failed at #{i}!!!"): true}     puts (r.empty? ? "Yes!" : "No :-(")  end  array_sorted? a bubble_sort! a array_sorted? a 

Good luck!

 
 

Relacionados problema

6  Clasificación de palabras por frecuencia  ( Sorting words by frequency ) 
Estoy haciendo una tarea simple en óxido después de leer el Libro de óxido : Lea un archivo de texto dividirlo en Whitespace desinfectar palabras elim...

7  Insertar ordenar en una lista vinculada  ( Insert sort on a linked list ) 
Quiero hacer un orden de inserción en una lista vinculada sin usar los nodos ficticios. Este es mi código. ¿Cómo se puede mejorar esto? Se aprecia cualquier...

7  Merge Sort en JavaScript  ( Merge sort in javascript ) 
Implementé este tipo de fusión en JS y noté que para los números de enteros aleatorios es mucho más rápido que la construcción en funciones de tipo de todos l...

12  Intento de un algoritmo de clasificación  ( Attempt at a sorting algorithm ) 
He estado jugando y leyendo algunos algoritmos de clasificación, y he decidido intentar escribir mi propia. Resultó ser bastante rápido (en comparación con lo...

9  Clasificación de visualizaciones - WinForms  ( Sorting visualizations winforms ) 
Descripción Creo que muchas personas han visto este video de Youtube "15 algoritmos de clasificación en 6 minutos" Cuando lo vi, decidí: "Puedo hacerlo m...

6  Fusionar la implementación de ordenación en Java  ( Merge sort implementation in java ) 
¿Puedes revisar mi implementación de tipo de fusión? De todas mis pruebas, parece que funciona, pero solo quería asegurarme de que lo estoy haciendo lo mejor ...

3  Diseño de MVC para recuperar, almacenar y presentar datos de una fuente externa  ( Mvc design to fetch store and present data from an external source ) 
Hace un par de semanas Una compañía me envió este desafío de codificación: Por favor escriba una aplicación web PHP y envíela a mí como archivo zip: que...

0  Función de clasificación personalizada implementada como un plugin jquery  ( Custom sorting function implemented as a jquery plugin ) 
Me pidieron que creara un complemento de jQuery que ordenara los elementos DOM homogéneos en un elemento de contenedor DOM dado. Se me ocurrió la idea de ad...

6  Clasificación de números no repetidos aleatorios  ( Sorting random non repeating numbers ) 
Estoy trabajando en un programa en el que 10000 números no repetidos aleatorios se clasifican de forma selectiva en orden ascendente " Team | Another Team ...

1  Python Bubble Sort  ( Python bubble sort ) 
a = [5, 2, 4, 6, 1, 3] def insert(arr): if len(arr) == 1: return arr # outer loop for i in range(1, len(arr)): # inner loop ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos