Você está na página 1de 4

Universidad Don Bosco.

Facultad de Ingeniera.
Escuela de Computacin.

Programacin III.
Tarea complementaria Gua #3.

Alumna: Leslie Mara Amaya Gmez.

Docente: Ing. Herson Miguel Serrano.

Grupo: 01 T
1. Calcule el grado de complejidad (notacin O) y el tiempo, para los algoritmos utilizados en la
prctica (Insercin y de burbuja y todo el programa).

Mtodo Burbuja.
public int[] burbuja(int[] datos)
{
for (int i = 0; i < datos.Length; i++)-----------O(n)
{
for (int j = 0; j < datos.Length - 1; j++)-----O(n)
{
if (datos[j] > datos[j + 1])-------------- O(1)
{
int aux = datos[j]; -------------- O(1)
datos[j] = datos[j + 1]; -------------- O(1)
datos[j + 1] = aux; -------------- O(1)
}
}
}
return datos; --------------O(1)
}

FUNCION=O(n)*O(n)*O(1)*O(1)*O(1)*O(1)=O(n2) cuadrtica

private void cmdAgregar_Click(object sender, EventArgs e)


{
lstDatos.Items.Add(nudDato.Value); -------------- O(1)
nudDato.Value = 0; -------------------------- O(1)
nudDato.Focus();-----------------------------O(1)

foreach(var it in nudDato.Controls) {-------------- O(n)


if(it is TextBox) ------------------------- O(1)
{
((TextBox)it).SelectAll();----------------O(1)

}
}
}
FUNCION=O(n)*O(1)*O(1)*O(1)*O(1)*O(1)=O(n) lineal

private void cmdOrdenar_Click(object sender, EventArgs e)


{
txtOrdenados.ResetText();----------------O(1)
//convirtiendo datos a un arreglo int
int[] datos = new int[lstDatos.Items.Count]; -------------- O(1)
for(int i = 0; i < lstDatos.Items.Count; i++)-------------- O(n)
{
datos[i] = Convert.ToInt32(lstDatos.Items[i]);--------- O(1)
}

Stopwatch tiempo = new Stopwatch(); ---------------- O(1)


tiempo.Start(); ---------------- O(1)
if (cmbMetodo.SelectedIndex == 0) --------------- O(1)
{
datos = burbuja(datos); ---------------- O(1)
label5.Text = "Burbuja";---------------- O(1)
}

/*else{
* datos= inserctionSort(datos);
* label5.Text = "Burbuja";
* }*/

bool primero = true; ---------------- O(1)


foreach(int num in datos) ---------------- O(n)
{
if (primero) txtOrdenados.Text += num.ToString();---------O(1)
else txtOrdenados.Text += " , " + num.ToString();---------O(1)
primero = false; --------- O(1)
}
tiempo.Stop(); ----------O(1)

lblInfo.Text = string.Format("Ordenamiento ejecutado en {0} ms.",


tiempo.ElapsedMilliseconds); ------------O(1)
}

FUNCION=O(n)*O(n)*O(1)*O(1)*O(1)*O(1)*O(1)=O(n2) cuadrtica
Insercin.
public int[] insertionSort(int[] datos)
{
for (int i = 0; i < datos.Length; i++)---------------- O(n)
{
int temp = datos[i]; --------- O(1)
int j = i - 1; --------- O(1)

while ((j >= 0) && (datos[j] > temp) ---------log(n)


{
datos[j + 1] = datos[j]; --------- O(1)
j--;--------- O(1)

}
datos[j + 1] = temp; ---------O(1)
}
return datos; --------- O(1)
}
FUNCION=O(n)*O(log(n))*O(1)*O(1)*O(1)*O(1)*O(1)*O(1)=O(nlog(n))
cuasilineal.
Tiempos obtenidos.

2. Analice si esos grados de complejidad corresponden a los tiempos presentados

El tiempo empleado en el mtodo burbuja tendra que ser mayor ya que tiene una complejidad
cuadrtica, en cambio el insertionsort posee una complejidad cuasi-lineal.

3. Analice por qu los tiempos no siempre son iguales a pesar de ingresar los mismos nmeros al
arreglo.

El tiempo de ejecucin varia por el nmero de veces que se realizan los bucles dentro del cdigo y
adems todas las instrucciones que este tiene que realizar al momento de la ejecucin. A un mayor
nmero de instrucciones as ser el tiempo de demora, aunque se ingresen la misma cantidad de
datos.

Você também pode gostar