Exemplo n.º 1
0
        public List <TreeElements> OrdenamientoDelDiccionario(Dictionary <char, charCount> diccionario, List <TreeElements> ListaProbabilidades, List <byte> ListaByte)

        {
            //se ordenará por orden ascendente la lista
            var sorted = from entrada in diccionario orderby entrada.Value ascending select entrada;

            //se introducirán los porcentajes de los caracteres en la tabla
            foreach (var caracter in sorted)
            {
                TreeElements elemento = new TreeElements();

                double aux = (Convert.ToDouble(caracter.Value.cantidad));
                elemento.character   = caracter.Key;
                elemento.probability = Convert.ToDouble((aux / ListaByte.Count()));
                ListaProbabilidades.Add(elemento);
            }
            ListaProbabilidades.Sort();
            return(ListaProbabilidades);
        }
Exemplo n.º 2
0
        public Node TreeCreation(List <TreeElements> lista)

        {
            Tree Auxiliar     = new Tree();
            Node Aux          = new Node();
            Node izquierdo    = new Node();
            Node derecho      = new Node();
            int  Repeticiones = lista.Count();

            for (int i = 0; i < Repeticiones; i++)
            {
                if (lista.Count < 2)
                {
                    break;
                }
                else
                {
                    Auxiliar  = new Tree();
                    Aux       = new Node();
                    izquierdo = new Node();
                    derecho   = new Node();
                    string nombre = "n" + (i + 1);
                    if (lista[0].Aux == null && lista[1].Aux == null)
                    {
                        //hijo izquierdo
                        izquierdo.character   = Convert.ToString(lista[0].character);
                        izquierdo.probability = lista[0].probability;
                        //hijo derecho
                        derecho.character   = Convert.ToString(lista[1].character);
                        derecho.probability = lista[1].probability;
                    }
                    else
                    {
                        if (lista[0].Aux != null && lista[1].Aux == null)
                        {
                            //hijo izquierdo
                            izquierdo = lista[0].Aux;
                            //hijo derecho
                            derecho.character   = Convert.ToString(lista[1].character);
                            derecho.probability = lista[1].probability;
                        }
                        else
                        {
                            if (lista[0].Aux == null && lista[1].Aux != null)
                            {
                                //hijo izquierdo
                                izquierdo.character   = Convert.ToString(lista[0].character);
                                izquierdo.probability = lista[0].probability;
                                //hijo derecho
                                derecho = lista[1].Aux;
                            }
                            else
                            {
                                //hijo izquierdo
                                izquierdo = lista[0].Aux;
                                //hijo derecho
                                derecho = lista[1].Aux;
                            }
                        }
                    }
                    lista.Remove(lista[0]);
                    lista[0] = null;
                    Aux      = Auxiliar.insert(izquierdo, derecho, nombre);
                    TreeElements elemento = new TreeElements();
                    elemento.Aux         = Aux;
                    elemento.probability = Aux.probability;
                    if (lista.Count() > 1)
                    {
                        for (int j = 1; j < lista.Count(); j++)
                        {
                            if (lista[j].probability > elemento.probability)
                            {
                                lista[j - 1] = elemento;
                                break;
                            }
                            else
                            {
                                lista[j - 1] = lista[j];
                                lista[j]     = null;
                                if (lista[lista.Count() - 1] == null)
                                {
                                    lista[lista.Count() - 1] = elemento;
                                }
                            }
                        }
                    }
                    else
                    {
                        lista[0] = elemento;
                    }
                }
            }
            return(lista[0].Aux);
        }
Exemplo n.º 3
0
        public int CompareTo(object obj)
        {
            TreeElements compareToObj = (TreeElements)obj;

            return(this.probability.CompareTo(compareToObj.probability));
        }