Conceptos de Diseño y Análisis de Algoritmos

Antes de comenzar a codificar debemos responder algunas preguntas básicas.

Algoritmo

Algoritmo? osea que flojera, eso es para Nerds!

Aunque no lo creas, aplicamos algoritmos en nuestra vida diaria o hacemos uso de algún aparato que utiliza un algoritmo para llevar acabo una actividad.

¿Cual sería el algoritmo para publicar una foto en Instagram?

  1. Abrir en mi iphone la app de Instagram (helloooo).
  2. Dar clic en publicar nueva foto o en tomar fotografía (hacer una pose nice).
  3. Aplicar filtros a la fotografía para verme más cool.
  4. Presionar el botón de enviar, subir o como se llame.
  5. Fin.

Sí, ese es un algoritmo y sí tu Iphone y la app de Instagram tuvieron que ejecutar sus algoritmos para poder llevar acabo la tarea encomendada por el todo poderoso de tu dedo.

ok, hagamos una definición más apropiada.

Un algoritmo, es una secuencia finita de operaciones, cuya ejecución da una solución a un problema en un tiempo finito.

Estructura de datos

¿Y qué carajos es una estructura de datos? 

Es la forma de organizar un conjunto de datos con el objetivo de facilitar la manipulación de dichos datos como un todo o individualmente. Define la organización y la manera en como se interrelacionan dichos datos y un conjunto de operaciones que se pueden realizar sobre esta estructura.

Operaciones sobre estructuras de datos

  • Alta
  • Baja
  • Búsqueda
  • Ordanamiento
  • Apareo (dada dos estructuras, originar una nueva ordenada)

Tipos de estructuras de datos

  • Arrays
    • Vectores
    • Matrices
  • Registro
  • Tipo de datos algebraico
  • Listas enlazadas / Linked Lists
    • Simples / Simples
    • Dobles / Doubles
    • Circulares / Rounded
    • Skip
  • Pilas / Stack
  • Colas / Queue
  • Árboles / Three
  • Grafos / Graph
Advertisements