Exemplo n.º 1
0
        /// <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 ";
            }

        }
Exemplo n.º 2
0
        /// <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();
        }