Los programadores universitarios necesitan aprender estos 8 algoritmos
8 algoritmos de programación que los programadores deben dominar
Algoritmo 1: Algoritmo de clasificación rápida
Quick Sort es un algoritmo de clasificación desarrollado por Tony Hall. En promedio, ordenar n elementos requiere comparaciones O(nlogn). En el peor de los casos, se requieren comparaciones O(n2), pero esta situación es poco común. De hecho, la clasificación rápida suele ser significativamente más rápida que otros algoritmos O(nlogn) porque su bucle interno se puede implementar de manera eficiente en la mayoría de las arquitecturas. La clasificación rápida utiliza la estrategia de dividir y conquistar para dividir una secuencia (lista) en dos subseries (sublistas).
Algoritmo 2: algoritmo de clasificación del montón
La clasificación del montón se refiere a un algoritmo de clasificación diseñado utilizando la estructura de datos de un montón. El apilamiento es una estructura que se aproxima a un árbol binario completo y al mismo tiempo satisface las propiedades del apilamiento: es decir, el valor clave o índice de un nodo secundario es siempre el tallo pequeño (o tallo grande) de su nodo padre. La complejidad temporal promedio de la clasificación del montón es O (nlogn).
Pasos del algoritmo:
1. Crea un montón H[0.n-1]
2. Muta la cabeza (valor máximo) y la cola del. cambio de montón
3. Reduzca el tamaño del montón en 1 y llame a shift_down(0). El propósito es ajustar los datos superiores de la nueva matriz a la posición correspondiente. el tamaño del montón es 1
p>Algoritmo 3: Merge Sort
Mergesort (Mergesort, traducción taiwanesa: Merge Sort) es un algoritmo de clasificación eficaz basado en operaciones de fusión. Este algoritmo es una aplicación muy típica que utiliza el método divide y vencerás (DivideandConquer).
Pasos del algoritmo:
1. Solicite espacio para que su tamaño sea la suma de dos secuencias ordenadas. Este espacio se utiliza para almacenar la secuencia fusionada.
2. Establezca dos punteros, y las posiciones iniciales son las posiciones iniciales de las dos secuencias ordenadas.
3. Compare los elementos señalados por los dos punteros, seleccione elementos relativamente pequeños y colóquelos en el espacio de fusión. Y mueva el puntero a la siguiente posición 4. Repita el paso 3 hasta que un determinado puntero llegue al final de la secuencia 5. Copie todos los elementos restantes de la otra secuencia directamente al final de la secuencia fusionada
. Algoritmo 4: algoritmo de búsqueda binaria búsqueda binaria El algoritmo de búsqueda
es un algoritmo de búsqueda para encontrar un elemento específico en una matriz ordenada.
El proceso de búsqueda comienza desde el elemento central de la matriz. Si el elemento central resulta ser el elemento a buscar, el proceso de búsqueda finaliza: si un elemento específico es mayor que el elemento central o menor que. el elemento del medio, luego, cuando la matriz sea más grande que O busque en la mitad del elemento del medio y comience la comparación desde el elemento del medio como antes. Si la matriz está vacía en un determinado paso, significa que no se puede encontrar. Este algoritmo de búsqueda reduce el rango de búsqueda a la mitad con cada comparación. La mitad de la búsqueda reduce el área de búsqueda a la mitad cada vez y la complejidad del tiempo es O (logn)
Si la matriz está vacía en un determinado paso, significa que no se puede encontrar. Este algoritmo de búsqueda reduce el rango de búsqueda a la mitad con cada comparación. La media búsqueda reduce el área de búsqueda a la mitad cada vez y la complejidad del tiempo es O (logn).
Algoritmo 5: BFPRT (Algoritmo de Búsqueda Lineal)
El problema resuelto por el algoritmo BFPRT es muy clásico, es decir, seleccionar el k-ésimo más grande (k-ésimo más pequeño) de una secuencia de n elementos, a través de un análisis inteligente, BFPRT puede garantizar que la complejidad del tiempo siga siendo lineal en el peor de los casos. La idea del algoritmo es similar a la idea de clasificación rápida. aún logra O (n) en el peor de los casos. Los cinco autores de algoritmos han manejado la complejidad del tiempo de manera exquisita.
Algoritmo 6: DFS (Depth-First Search)
La búsqueda en profundidad es un tipo de algoritmo de búsqueda. Atraviesa los nodos del árbol a lo largo de su profundidad, buscando ramas del árbol lo más profundo posible. Cuando se hayan explorado todos los bordes del nodo v, la búsqueda retrocederá hasta el nodo inicial del borde donde se encontró el nodo v. Este proceso continúa hasta que se hayan descubierto todos los nodos accesibles desde el nodo de origen.
Si todavía hay nodos sin descubrir, seleccione uno de ellos como nodo de origen y repita el proceso anterior. Todo el proceso se repite hasta que se visiten todos los nodos. DFS es una búsqueda ciega. La búsqueda en profundidad es un algoritmo clásico en la teoría de grafos. El algoritmo de búsqueda en profundidad se puede utilizar para generar la tabla de clasificación topológica correspondiente del gráfico de destino. La tabla de clasificación topológica se puede utilizar para resolver convenientemente muchos problemas relacionados con la teoría de grafos. como el problema de ruta máxima y así sucesivamente. Las estructuras de datos del montón se utilizan generalmente para ayudar en la implementación del algoritmo DFS.
Algoritmo 7: algoritmo de búsqueda en amplitud BFS
(Breadth-First-Search) es un algoritmo de búsqueda de gráficos. En pocas palabras, BFS comienza desde el nodo raíz y atraviesa los nodos del árbol (gráfico) a lo largo del ancho del árbol (gráfico). Si se visitan todos los nodos, el algoritmo finaliza BFS y también es una búsqueda ciega. Las estructuras de datos de cola se utilizan generalmente para ayudar en la implementación del algoritmo BFS.
Pasos del algoritmo:
1. Primero coloque el nodo raíz en la cola.
2. Elimine el primer nodo de la cola y compruebe si es el objetivo. Si se encuentra el objetivo, la búsqueda finaliza y se devuelven los resultados. De lo contrario, agregue a la cola todos sus hijos directos que aún no hayan sido probados.
3. Si la cola está vacía, significa que se ha verificado toda la imagen, es decir, no hay ningún objetivo que buscar en la imagen. Finalice la búsqueda y regrese "Destino no encontrado" 4. Repita el paso 2.
Algoritmo 8: Algoritmo de programación dinámica
La programación dinámica (Programación dinámica) es un método utilizado en matemáticas, informática y economía, mediante la descomposición del problema original en subdivisiones relativamente simples. Enfoque basado en problemas para la resolución de problemas complejos. La programación dinámica suele ser adecuada para problemas con subproblemas superpuestos y propiedades de subestructura óptimas. Los métodos de programación dinámica suelen tardar mucho menos que las soluciones ingenuas.
La idea básica detrás de la programación dinámica es muy simple. En términos generales, para resolver un problema determinado, necesitamos resolver sus diferentes partes (es decir, subproblemas) y luego combinar las soluciones de los subproblemas para llegar a una solución al problema original. A menudo, muchos subproblemas son muy similares, por lo que la programación dinámica intenta resolver cada subproblema solo una vez, reduciendo así la cantidad de cálculo: una vez que se ha calculado la solución a un subproblema determinado, se memoriza y almacena en caso de que se necesite el mismo subproblema la próxima vez. Al resolver, mira la tabla directamente.