Estructuras de datos y algoritmos en Swift
Estos son el resumen de mis aprendizajes de un curso de Udemy: "Estructuras de datos y algo en Swift"
Complejidad del tiempo:
- Tiempo constante
- Tiempo lineal
- Tiempo cuadrático
- Tiempo logarítmico - Search binaria
- Tiempo cuasilíneo
Nodo:
- Raíz
- Niño -> Niño izquierdo y niño derecho
- Hoja
Lista vinculada
Los elementos están conectados entre sí por referencia llamados nodos
El primer nodo en la lista vinculada se llama cabezal
El último nodo se llama nodo de cola
Operaciones: - Push - Agregar - Insertar - Pop - Removelast - Retirar
Pila (lifo)
Cola (FIFO)
Recursión
- Caso base: que detiene la recursión.
- Caso recursivo
Árboles:
- Profundidad Primera transversal
- Traversal de orden de orden
- Buscar
- Árbol binario (puede tener máximo de: solo 2 hijos - izquierda y derecha)
- En orden Traversal -> Leftchild -> nodo -> RightChild
- Traversal posterior al orden -> Leftchild -> RightChild -> nodo
- Traversal previo al orden -> nodo -> Leftchild -> RightChild
- Árbol de búsqueda binario
Búsqueda lineal
Búsqueda binaria
- Matriz ordenada
- Índice medio: izquierda o derecha
- Mejor hora: O (1)
- Peor tiempo: o (log n)
Burbuja
- No atento
- Mejor hora: o (n) (si ya se ordenó)
- Peor tiempo: o (n^2)
Clasificación de selección
- Intercambie el elemento mínimo en la matriz con el índice de corriente
- Pasar al siguiente índice y repetir el paso 1
- Mejor hora: O (N^2)
- Peor tiempo: o (n^2)
Clasificación de inserción
- No atento
- Mejor hora: O (N)
- Peor tiempo: o (n^2)
Gráfico:
Consistir en
- Vértices / vértice
- Bordes / borde
Tipos de gráficos:
- Gráficos pesados
- Gráficos dirigidos
- Gráficos no dirigidos (bidireccionales)
Lista de adyacencia
- Forma más común/ampliamente utilizada para crear y representar un gráfico