/// <summary> /// Imprime los vectores de elementos ordenados y desordenados correspondiente a la fila seleccionada de la tabla. /// </summary> private void visualizarLista(Lista lista) { string sms = ""; tbDesorden.AppendText(""); tbOrden.AppendText(""); if (lista.vectorD != null) { for (int i = 0; i < lista.vectorD.Vector.Length; i++) { sms += Convert.ToString(lista.vectorD.Vector.GetValue(i)); sms += " - "; } tbDesorden.AppendText(sms); lblDesordenL.Content = "Lista " + Convert.ToString(lista.id) + " desordenada "; } if (lista.vectorO != null) { sms = ""; for (int i = 0; i < lista.vectorO.Vector.Length; i++) { sms += Convert.ToString(lista.vectorO.Vector.GetValue(i)); sms += " - "; } tbOrden.AppendText(sms); lblDesordenL.Content = "Lista " + Convert.ToString(lista.id) + " ordenada "; } }
/// <summary> /// Hilo para la ordenación en función de los criterios establecidos. /// </summary> public void HiloOrdena() { Ordenación ord; NanoTemporizador nano = new NanoTemporizador(); if (datosOrdenar.Algoritmo.CompareTo(Algoritmo.Insercion) == 0) { for (int i = 0; i < listas.Count; i++) { if (listas.ElementAt(i).ordenado.CompareTo(Ordenado.No) == 0) { ord = new Inserción(datosOrdenar.Criterio); nano.Start(); listas.ElementAt(i).vectorD.Vector.CopyTo(listas.ElementAt(i).vectorO.Vector, 0); ord.Ordenar((int[])listas.ElementAt(i).vectorO.Vector); nano.Stop(); //asignar los valores derivados de la ordenacion a la lista. Lista aux = listas.ElementAt(i); aux.nComparaciones = ord.NComparaciones; aux.nIntercambios = ord.NIntercambios; aux.tiempo = nano.ElapsedMilliseconds; aux.ordenado = Ordenado.Si; System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { listas.RemoveAt(i); listas.Insert(aux.id, aux); }); } } } else if (datosOrdenar.Algoritmo.CompareTo(Algoritmo.Seleccion) == 0) { for (int i = 0; i < listas.Count; i++) { if (listas.ElementAt(i).ordenado.CompareTo(Ordenado.No) == 0) { ord = new Selección(datosOrdenar.Criterio); nano.Start(); listas.ElementAt(i).vectorD.Vector.CopyTo(listas.ElementAt(i).vectorO.Vector, 0); ord.Ordenar((int[])listas.ElementAt(i).vectorO.Vector); nano.Stop(); //falta capturar los tiempos de ordenacion Lista aux = listas.ElementAt(i); aux.nComparaciones = ord.NComparaciones; aux.nIntercambios = ord.NIntercambios; aux.tiempo = nano.ElapsedMilliseconds; aux.ordenado = Ordenado.Si; System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { listas.RemoveAt(i); listas.Insert(aux.id, aux); }); } } } else { for (int i = 0; i < listas.Count; i++) { if (listas.ElementAt(i).ordenado.CompareTo(Ordenado.No) == 0) { ord = new QuickSort(datosOrdenar.Criterio); nano.Start(); listas.ElementAt(i).vectorD.Vector.CopyTo(listas.ElementAt(i).vectorO.Vector, 0); ord.Ordenar((int[])listas.ElementAt(i).vectorO.Vector); nano.Stop(); //falta capturar los tiempos de ordenacion Lista aux = listas.ElementAt(i); aux.nComparaciones = ord.NComparaciones; aux.nIntercambios = ord.NIntercambios; aux.tiempo = nano.ElapsedMilliseconds; aux.ordenado = Ordenado.Si; System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { listas.RemoveAt(i); listas.Insert(aux.id, aux); }); } } } refreshGrid(); visibilidadBarra_Final(); }