コード例 #1
0
 public override void TestOrden()
 {
     Orden ascendente = Orden.Ascendente;
     Orden descendente = Orden.Descendente;
     SelecciónInt = new Selección(Orden.Ascendente);
     Assert.AreEqual(SelecciónInt.Orden, ascendente);
     SelecciónInt.Orden = descendente;
     Assert.AreEqual(SelecciónInt.Orden, descendente);
 }
コード例 #2
0
 public override void constructorCorrecto()
 {
     Orden ordenAsc = Orden.Ascendente;
     SelecciónInt = new Selección(Orden.Ascendente);
     Assert.AreEqual(ordenAsc, SelecciónInt.Orden);
     Orden ordenDesc = Orden.Descendente;
     SelecciónInt = new Selección(Orden.Descendente);
     Assert.AreEqual(ordenDesc, SelecciónInt.Orden);
 }
コード例 #3
0
 public override void TestCorrectoAscendenteInt1000()
 {
     SelecciónInt = new Selección(Orden.Ascendente);
     datosInt1000.insertaAleatorio();
     SelecciónInt.Ordenar((int[])datosInt1000.Vector);
     for (int i = 1; i < datosInt1000.Vector.Length; i++)
     {
         Assert.True((int)datosInt1000.Vector.GetValue(i) >=
             (int)datosInt1000.Vector.GetValue(i - 1));
     }
 }
コード例 #4
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();
        }
コード例 #5
0
 public override void nComparacionesVectoresIntDescendente()
 {
     SelecciónInt = new Selección(Orden.Descendente);
     datosInt10.insertaAleatorio();
     SelecciónInt.Ordenar((int[])datosInt10.Vector);
     int numComparaciones10 = SelecciónInt.NComparaciones;
     datosInt1000.insertaAleatorio();
     SelecciónInt.Ordenar((int[])datosInt1000.Vector);
     int numComparaciones1000 = SelecciónInt.NComparaciones;
     Assert.True(numComparaciones1000 > numComparaciones10);
 }
コード例 #6
0
 public override void nIntercambiosVectorOrdenadoDescendenteInt()
 {
     int[] vectorOrdenado = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
     SelecciónInt = new Selección(Orden.Descendente);
     SelecciónInt.Ordenar(vectorOrdenado);
     Assert.True(SelecciónInt.NIntercambios == 0);
 }
コード例 #7
0
 public override void nIntercambiosVectorOrdenadoAscendenteInt()
 {
     int[] vectorOrdenado = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
     SelecciónInt = new Selección(Orden.Ascendente);
     SelecciónInt.Ordenar(vectorOrdenado);
     Assert.True(SelecciónInt.NIntercambios == 0);
 }
コード例 #8
0
 public override void TestOrdenaInversoDescToAscInt()
 {
     SelecciónInt = new Selección(Orden.Descendente);
     datosIntDescendente.insertaAleatorio();
     SelecciónInt.Ordenar((int[])datosIntDescendente.Vector);
     SelecciónInt.Orden = Orden.Ascendente;
     SelecciónInt.Ordenar((int[])datosIntDescendente.Vector);
     for (int i = 1; i < datosIntDescendente.Vector.Length; i++)
     {
         Assert.True((int)datosIntDescendente.Vector.GetValue(i) >=
             (int)datosIntDescendente.Vector.GetValue(i - 1));
     }
 }