Esto probablemente podría generalizarse diciendo: “¿cuáles son los algoritmos más utilizados para los desarrolladores web”? Hay dos clases de algoritmos que, como desarrollador web, seguramente usará repetidamente: buscar y ordenar.
En Ruby on Rails, utilizará la función de clasificación de listas y la pasará como un comparador con mayor frecuencia, como:
foo = [3,1,4,5,6,3,7,9,8]
foo.sort {| a, b | b a}
pone foo
# salidas: [9, 8, 7, 6, 5, 4, 3, 2, 1]
- ¿Es un buen enfoque: hacer el backend y la API REST y luego el front-end?
- ¿Es posible aprender programación php dentro de un año y qué se necesita?
- ¿Cuál es el atributo rowspan en HTML (en caso de que exista)? Dar ejemplos.
- ¿Cómo el diseño web receptivo ayuda en la interfaz de usuario y la experiencia del usuario?
- Cómo crear un formulario de registro usando MVC
Es posible que necesite un SortedSet, o puede usar ActiveRecord para ordenar objetos de datos recuperados de su fuente de datos, como:
User.order (‘nombre DESC, correo electrónico’)
Aquí los objetos de usuario se devuelven por nombre descendente, y donde el nombre coincide luego por correo electrónico.
Este también es un ejemplo de búsqueda, aunque hay más aplicaciones directas en Rails.
Por lo general, utilizará un acceso directo o una búsqueda pura o alguna combinación de los mismos. El acceso directo sería como conocer el índice que necesita dentro de una matriz, o utilizando un hash o conjunto. La búsqueda pura sería algo así como una búsqueda binaria, que es genial cuando tienes una matriz ordenada y necesitas encontrar algo en ella. Quizás haya recibido información ordenada de una fuente externa y solo necesita una entrada. En este caso, iterar a través de la lista para almacenarlo en un hash o encontrar el elemento en cuestión sería más costoso que utilizar la función de búsqueda de matriz (introducida en Ruby 2.0), como:
def has_error? (error = 404)
foo = some_helper_instance.get_all_error_codes ()
foo.bsearch {| err | err == error} .presente?
fin
Tenga en cuenta que el uso de “.present?” requiere active_support.
Lo maravilloso aquí es que lo que necesita en términos de algoritmos probablemente se implemente implícitamente para usted, ya sea implícitamente (por ejemplo, realizando una búsqueda en una columna indexada en una base de datos, búsqueda binaria) o disponible de manera explícita (por ejemplo, mi ejemplo de búsqueda binaria anterior .