Está en la página 1de 4

En el contexto de estructuras de datos, el análisis de algoritmos se refiere a la evaluación del

rendimiento de los algoritmos que operan sobre estas estructuras. Las estructuras de datos son
formas organizadas de almacenar y manipular datos, como listas, árboles, grafos, pilas, colas,
entre otras. Los algoritmos que se aplican a estas estructuras se utilizan para realizar diversas
operaciones, como inserción, eliminación, búsqueda y ordenación de datos.

El análisis de algoritmos en estructuras de datos implica evaluar cómo se comportan los algoritmos
en términos de tiempo y espacio cuando se aplican a diferentes tamaños y tipos de datos en estas
estructuras. Algunas preguntas clave que el análisis de algoritmos en estructuras de datos busca
responder incluyen:

1. Eficiencia Temporal: ¿Cuánto tiempo lleva realizar una operación en una estructura de
datos? ¿Cómo varía este tiempo a medida que aumenta el tamaño de la estructura o la
cantidad de datos?

2. Eficiencia Espacial: ¿Cuánta memoria se requiere para almacenar una estructura de datos
y los datos que contiene? ¿Cómo varía el uso de memoria a medida que crece la
estructura de datos?

 Crear un ejemplo de un programa con que aborde el tema de Complejidad en el


tiempo

El programa realiza una búsqueda en una lista de números usando el algoritmo de búsqueda
binaria, que tiene una complejidad temporal de O(log n) debido a su naturaleza eficiente en listas
ordenadas.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Estrucdedatos
{
class Program
{
static void Main(string[] args)
{
List<int> numeros = GenerarListaNumeros(1, 100);

while (true)
{
Console.WriteLine("Opciones:");
Console.WriteLine("1. Visualizar lista de números");
Console.WriteLine("2. Buscar un número");
Console.WriteLine("3. Salir");
Console.Write("Seleccione una opción: ");

int opcion = Convert.ToInt32(Console.ReadLine());

switch (opcion)
{
case 1:
MostrarListaNumeros(numeros);
break;
case 2:
Console.Write("Ingrese un número para buscar en la lista: ");
int numeroBuscado = Convert.ToInt32(Console.ReadLine());
bool encontrado = BusquedaBinaria(numeros, numeroBuscado);

if (encontrado)
{
Console.WriteLine("El número fue encontrado en la lista.");
}
else
{
Console.WriteLine("El número no fue encontrado en la lista.");
}
break;
case 3:
return;
default:
Console.WriteLine("Opción no válida. Por favor, seleccione una opción válida.");
break;
}
}
}

static List<int> GenerarListaNumeros(int inicio, int fin)


{
List<int> numeros = new List<int>();
for (int i = inicio; i <= fin; i++)
{
numeros.Add(i);
}
return numeros;
}

static void MostrarListaNumeros(List<int> lista)


{
Console.WriteLine("Lista de números:");
foreach (var numero in lista)
{
Console.Write(numero + " ");
}
Console.WriteLine();
}

static bool BusquedaBinaria(List<int> lista, int numero)


{
int izquierda = 0;
int derecha = lista.Count - 1;

while (izquierda <= derecha)


{
int medio = (izquierda + derecha) / 2;

if (lista[medio] == numero)
{
return true;
}
else if (lista[medio] < numero)
{
izquierda = medio + 1;
}
else
{
derecha = medio - 1;
}
}

return false;
}
}

}
En este programa, la opción "1" permite al usuario visualizar la lista de números generados.

La opción "2" permite buscar un número en la lista utilizando el algoritmo de búsqueda binaria.

La opción "3" permite salir del programa.

 Crear un ejemplo de un programa con que aborde el tema de Complejidad en el


espacio

El programa genera y almacena una lista de números en una estructura de datos y luego calcula la
suma de todos los números en esa lista. La complejidad en el espacio se refiere a la cantidad de
memoria utilizada por un algoritmo o programa para ejecutarse. En este ejemplo, la complejidad
en el espacio es O(n), donde n es el número de elementos en la lista, debido a que estamos
almacenando la lista de números en memoria.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Espacial
{
class Program
{
static void Main(string[] args)
{
Console.Write("Ingrese la cantidad de números a generar y almacenar en la lista: ");
int cantidadNumeros = Convert.ToInt32(Console.ReadLine());

// Generar y almacenar la lista de números


List<int> numeros = GenerarListaNumeros(cantidadNumeros);

// Calcular la suma de los números en la lista


int suma = CalcularSuma(numeros);

Console.WriteLine("La lista de números generada es:");


MostrarListaNumeros(numeros);

Console.WriteLine($"La suma de los números en la lista es: {suma}");


Console.ReadLine();
}
static List<int> GenerarListaNumeros(int cantidad)
{
List<int> numeros = new List<int>();
Random random = new Random();

for (int i = 0; i < cantidad; i++)


{
numeros.Add(random.Next(1, 101)); // Números aleatorios del 1 al 100
}

return numeros;
}

static int CalcularSuma(List<int> lista)


{
int suma = 0;

foreach (var numero in lista)


{
suma += numero;
}

return suma;
}

static void MostrarListaNumeros(List<int> lista)


{
foreach (var numero in lista)
{
Console.Write(numero + " ");
}
Console.WriteLine();
}
}
}
En este programa, se genera una lista de números aleatorios y se almacena en una estructura de
datos de lista. Luego, se calcula la suma de estos números. La función GenerarListaNumeros crea
una lista de números aleatorios, y la función CalcularSuma calcula la suma de los números en esa
lista. La función MostrarListaNumeros simplemente muestra los números en la lista.

También podría gustarte