Você está na página 1de 13

Nombre de la materia

Algoritmos y estructuras de datos

Nombre de la Licenciatura
Ingenieria en Sistemas

Nombre del alumno


Edgar

Matrícula
000xxxxxx

Nombre de la Tarea
Tarea 2

Unidad 1
Estructuras estaá ticas de datos

Nombre del Profesor

Fecha
19/03/2018
Unidad 1: Estructuras estáticas de datos
Algoritmos y estructuras de datos

¿Sabías qué….?

El ordenamiento y búsqueda de datos son dos conceptos ampliamente utilizados en


computación ya que permiten el manejo de grandes cantidades de datos para su
procesamiento lo que facilita la realización de tareas que pudieran parecer muy complejas.

ACTIVIDAD 2

Objetivos:

 Analizar el funcionamiento y las características de los métodos de ordenación y


búsqueda.

 Estructurar algoritmos que resuelvan situaciones que requieran ordenamiento y


búsqueda de datos.

Instrucciones:
Después de revisar los recursos siguientes debes desarrollar la actividad 2.

Presentación

 Creación de archivos
En la siguiente presentación conocerás los métodos utilizados para crear y leer
archivos de texto. Comprueba cada uno de los ejemplos capturando cada código en
el editor de C#.

Lectura
 Algoritmos de ordenación y búsqueda (S.d.).

2
Unidad 1: Estructuras estáticas de datos
Algoritmos y estructuras de datos

¿Cómo entregar nuestra tarea?

-Utiliza el formato para entrega de tareas e integra un documento que contenga un breve
apartado de introducción, desarrollo (puede ser el código desarrollado con comentarios en
las principales secciones) conclusiones y referencias.

-Envía el archivo en C# comprimido a tu profesor.

Forma de evaluación:

Criterio Ponderación

Presentación 10%

Desarrollo del ejercicio: 90%

 Solicite al usuario introducir la longitud


del arreglo a crear. (valor 1 punto.)

 Solicite los elementos a almacenar en


el arreglo. (valor 1 punto.)

 Muestre el contenido del arreglo.


(valor 1 punto.)

 Ordene el arreglo por el método


seleccionado. (valor 2 puntos.)

 Muestre el arreglo ordenado. (valor 1


punto.)

 Solicite la búsqueda de un elemento


(valor 1 punto.)

 Indique la posición en que se localiza


el elemento buscado. (valor 2 puntos.)

3
Unidad 1: Estructuras estáticas de datos
Algoritmos y estructuras de datos

Desarrollo de la actividad:
Ejemplo 1:

Para crear un arreglo de una dimensión se debe especificar de qué tipo serán los elementos
del array:
<tipo> [] <nombre> = new <tipo> [<tamaño>];

Por ejemplo, si se desea crear un arreglo de 8 números enteros se hace de la siguiente


forma:
int [] numeros = new int [8];

Para acceder a un elemento en una posición i solo hay que hacer mi_array[i] si tiene una
dimensión, si tiene más de una dimensión, podemos hacer my_array[i,j].

int [] elementos = new int[]{5,4,3,2,1};


int x = elementos[2];
Console.WriteLine(x); //Se imprime 3

Localizar un elemento en un arreglo (para el caso de un arreglo tamaño 10):

Console.WriteLine("Ingrese elemento que desea buscar en el arreglo");


elemento=Console.ReadLine();
for(int i=0; i<10;i++)
if(arreglo[i]==elemento)
Console.WriteLine ("El elemento se encuentra en la posicion:{0}",posicion);
Console.ReadLine();

4
Unidad 1: Estructuras estáticas de datos
Algoritmos y estructuras de datos

Ejemplo 2:
En el siguiente ejemplo, se muestra cómo crear un arreglo, se ordena de forma ascendente
por el método de burbuja y se pide al usuario indique un elemento a buscar para indicar la
posición en la que se encuentra:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Burbuja
{
class Burbuja
{
private int[] vector;

public void Cargar()


{
Console.WriteLine("Usando el modo Burbuja");
Console.Write("Ingresa longitud de vector: ");
string linea;
linea = Console.ReadLine();
int num;
num = int.Parse(linea);
vector = new int[num];
for (int f = 0; f < vector.Length; f++)
{
Console.Write("Ingresa el numero " + (f + 1) + ": ");
linea = Console.ReadLine();
vector[f] = int.Parse(linea);
}
}

public void MetodoBurbuja()


{
int t;
for (int a = 1; a < vector.Length; a++)
for (int b = vector.Length - 1; b >= a; b--)
{
if (vector[b - 1] > vector[b])
{
t = vector[b - 1];
vector[b - 1] = vector[b];
vector[b] = t;
}
}
}
public void Imprimir()
{
Console.WriteLine("Numeros ordenados en forma ascendente");
for (int f = 0; f < vector.Length; f++)
{

5
Unidad 1: Estructuras estáticas de datos
Algoritmos y estructuras de datos

Console.Write(vector[f] + " ");


}
Console.ReadKey();
}

public void busqueda(int num)


{
int l = 0, h = 9;
int m = 0;
bool found = false;
while (l <= h && found == false)
{
m = (l + h) / 2;
if (vector[m] == num)
found = true;
if (vector[m] > num)
h = m - 1;
else
l = m + 1;
}
if (found == false)
{ Console.Write("\nEl elemento {0} no esta en el arreglo", num); }
else
{ Console.Write("\nEl elemento {0} esta en la posicion: {1}", num, m + 1); }
}
public void Imprimir1()
{
for (int f = 0; f > vector.Length; f++)
{
Console.Write(vector[f] + " ");
}
}
static void Main(string[] args)
{
Burbuja pv = new Burbuja();
pv.Cargar();
pv.MetodoBurbuja();
pv.Imprimir();
pv.Imprimir1();
Console.Write("\n\nQue elemento buscas: ");
int num = int.Parse(Console.ReadLine());
pv.busqueda(num);
Console.ReadKey();
}
}
}

6
Unidad 1: Estructuras estáticas de datos
Algoritmos y estructuras de datos

Ejercicio 1:
Tu tarea consiste en seleccionar un método de ordenación y búsqueda y con base a ello
realizar un programa de consola en C# que ejecute lo siguiente:
(Valor 1.0 punto)

 Solicite al usuario introducir la longitud del arreglo a crear.


(Valor 1.0 punto)

 Solicite los elementos a almacenar en el arreglo.


(Valor 1.0 punto)

 Muestre el contenido del arreglo.


(Valor 2.0 puntos)

 Ordene el arreglo por el método seleccionado.


(Valor 1.0 punto)

 Muestre el arreglo ordenado.


(Valor 1.0 punto)

 Solicite la búsqueda de un elemento


(Valor 2.0 punto)

 Indique la posición en que se localiza el elemento buscado.

7
Unidad 1: Estructuras estáticas de datos
Algoritmos y estructuras de datos

PROGRAMA
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.IO;

 namespace ConsoleApplication10
 {
 class Program
 {
 static void Main()
 {
 int filas = 0;
 Console.WriteLine("indique la longitud del arreglo:");
 filas = Convert.ToInt32(Console.ReadLine());
 int[] miarreglo = new int[filas];
 for (int i = 0; i < filas; i++)
 {
 Console.WriteLine("elementos del arrego posicion ["+i +"]:");
 miarreglo[i]= Convert.ToInt32(Console.ReadLine());
 }
 //para imprimirlo
 for (int i = 0; i < filas; i++)
 {
 Console.WriteLine("[" +miarreglo [i] + "]");

 }
 Console.WriteLine("");
 Console.WriteLine("elija una opcion para ordenar el arreglo");
 Console.WriteLine("");
 Console.WriteLine("1.- ordenacion por intercambio");//done
 Console.WriteLine("2.- ordenacion por seleccion"); //done
 Console.WriteLine("3.- ordenacion por insercion");//done
 Console.WriteLine("4.- ordenacion por burbuja"); //done
 Console.WriteLine("5.- ordenacion shell");///done
 Console.WriteLine("6.- ordenacion rapida");//done
 Console.WriteLine("7.- salir");
 int opcion = Convert.ToInt32(Console.ReadLine());
 switch (opcion)
 {
 case 1:
 Console.WriteLine("1.- intercambio");
 int ii=0,jj=0,auxiliar=0;
 while (true)
 {

8
Unidad 1: Estructuras estáticas de datos
Algoritmos y estructuras de datos

 if (miarreglo[ii + 1] < miarreglo[ii])


 {
 auxiliar = miarreglo[ii + 1];
 miarreglo[ii + 1] = miarreglo[ii];
 miarreglo[ii] = auxiliar;
 jj++;
 }
 ii++;
 if (ii == miarreglo.Length - 1)
 {
 ii = 0;
 if (jj == 0)
 {
 break;
 }
 jj = 0;
 }
 }
 //para imprimirlo
 for (int l = 0; l < filas; l++)
 {
 Console.WriteLine("[" + miarreglo[l] + "]");

 }
 break;
 case 2:
 Console.WriteLine("2.- seleccion");
 int aux, cont1, cont2;
 for (cont1 = 1; cont1 < miarreglo.Length; cont1++)
 {
 aux = miarreglo[cont1];
 for (cont2 = cont1 - 1; cont2 >= 0 &&
miarreglo[cont2] > aux; cont2--)
 {
 miarreglo[cont2 + 1] = miarreglo[cont2];
 miarreglo[cont2] = aux;
 }
 }
 //para imprimirlo
 for (int i = 0; i < filas; i++)
 {
 Console.WriteLine("[" + miarreglo[i] + "]");

 }
 break;
 case 3:
 Console.WriteLine("3.- Insercion");
 int auxi, j;

9
Unidad 1: Estructuras estáticas de datos
Algoritmos y estructuras de datos

 for (int i = 0; i < miarreglo.Length; i++)


 {
 auxi = miarreglo[i];
 j = i - 1;
 while (j >= 0 && miarreglo[j] > auxi)
 {
 miarreglo[j + 1] = miarreglo[j];
 j--;
 }
 miarreglo[j + 1] = auxi;
 }
 //para imprimirlo
 for (int i = 0; i < filas; i++)
 {
 Console.WriteLine("[" + miarreglo[i] + "]");

 }
 break;
 case 4:
 Console.WriteLine("4.-burbuja");
 int m = 0;
 for (int x = 1; x < filas; x++)
 {
 for (int y = 0; y < filas - 1; y++)
 {
 if (miarreglo[x] < miarreglo[y])
 {
 m = miarreglo[x];
 miarreglo[x] = miarreglo[y];
 miarreglo[y] = m;
 }
 }
 }
 //para imprimirlo
 for (int r = 0; r < filas; r++)
 {
 Console.WriteLine("{0}.-{1}", r + 1,
miarreglo[r]);

 }
 break;
 case 5:
 Console.WriteLine("5.- shell");
 int salto = 0;
 int sw = 0;
 int auxili = 0;
 int e = 0;
 salto = miarreglo.Length / 2;

10
Unidad 1: Estructuras estáticas de datos
Algoritmos y estructuras de datos

 while (salto > 0)


 {
 sw = 1;
 while (sw != 0)
 {
 sw = 0;
 e = 1;
 while (e <= (miarreglo.Length - salto))
 {
 if (miarreglo[e - 1] > miarreglo[(e - 1) +
salto])
 {
 auxili = miarreglo[(e - 1) + salto];
 miarreglo[(e - 1) + salto] =
miarreglo[e - 1];
 miarreglo[(e - 1)] = auxili;
 sw = 1;
 }
 e++;
 }
 }
 salto = salto / 2;
 }

 //para imprimirlo
 for (int r = 0; r < filas; r++)
 {
 Console.WriteLine("{0}.-{1}", r + 1,
miarreglo[r]);

 }
 break;
 case 6:
 Console.WriteLine("6.- rapida o quick");
 Array.Sort(miarreglo);
 foreach (int str in miarreglo)
 Console.WriteLine(" " + str); // lo imprime

 break;
 case 7:
 Console.WriteLine("salir");
 break;
 default:
 Console.WriteLine("default");
 break;
 }
 Console.WriteLine("si desea buscar un elemento del arreglo
presione 1 sino 2 (salir)");

11
Unidad 1: Estructuras estáticas de datos
Algoritmos y estructuras de datos

 int opcion2 = Convert.ToInt32(Console.ReadLine());


 switch (opcion2)
 {
 case 1:
 Console.WriteLine("¿que numero desea buscar?:");
 int numbuscar = int.Parse(Console.ReadLine());
 int lll=0, hhh=filas,mmm=0;
 bool found = false;
 while (lll<=hhh && found == false)
 {
 mmm=(lll+hhh)/2;
 if (miarreglo[mmm]== numbuscar)
 found = true;
 if (miarreglo[mmm]>numbuscar)
 hhh=mmm-1;
 else
 lll=mmm+1;
 }
 if (found == false)
 {
 Console.WriteLine("el elemento {0} no esta en el
arreglo",numbuscar);
 }
 else
 {
 Console.WriteLine("el elemento {0} esta en la
posicion: {1}",numbuscar, mmm+1);
 }
 break;
 case 2:
 Console.WriteLine("salir");
 break;
 default:
 Console.WriteLine("default");
 break;
 }
 Console.ReadLine();

 }
 }
 }

12
Unidad 1: Estructuras estáticas de datos
Algoritmos y estructuras de datos

13

Você também pode gostar