Biblioteca de clases genéricas - errores, descripción, preguntas, características de uso y sugerencias - página 6
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Sucede que diferentes palabras comienzan con la misma letra del alfabeto. Si ponemos "manzana" en nuestro diccionario anterior, y luego intentamos poner "aplicación", no funcionará. El índice 0 estará ocupado por la palabra manzana. En este caso hablamos de una colisión de la función hash. Nuestra función hash es muy sencilla: devuelve el número del primer carácter de la palabra, por lo que las colisiones en esta función serán muy frecuentes. Para almacenar diferentes palabras, que empiezan por la misma letra, haremos una adición: almacenaremos los elementos no en array, sino en array de arrays. En este caso, el índice 0 contendrá otra matriz con dos palabras: "manzana" y "aplicación":
Ahora nuestro diccionario almacena palabras que incluso empiezan por la misma letra. Pero el coste de acceder a palabras con la misma primera letra aumenta. Porque ahora necesitamos una búsqueda completa de todas las palabras que empiezan por 'a' para saber si la palabra 'aplicación' está en el diccionario o no. Si nuestra función hash produjera números diferentes aunque las palabras difirieran en un carácter, entonces la probabilidad de probar palabras con los mismos índices tendería a cero, y el acceso a un elemento arbitrario tendería a o(1). Esto es exactamente lo que ocurre en los diccionarios reales y las funciones que se utilizan en ellos son a prueba de colisiones, por lo que podemos afirmar sin lugar a dudas que el acceso a los elementos de estas colecciones es muy rápido y casi no tiene búsqueda.
Hace poco leí un libro sobre el tema. Se llama"Algoritmos de Rechazo". Todo está muy claramente expuesto, con ejemplos.
En el siguiente ejemplo lo mejoraremos para que pueda almacenar palabras que empiecen por la misma letra.
Por favor, escríbalo de forma sucinta, sin encabezados ni entidades innecesarias.
Por ejemplo, este
podría escribirse de forma mucho más clara.
Y aún así este código puede funcionar de forma diferente para MT4/5 porque en MT4 el array se inicializa con valores NULL, y en MT5 puede ser basura.
Por favor, escriba de forma sucinta, sin líos de sombreros y entidades superfluas.
...
Categóricamente en contra. Es preferible que el código esté escrito en su totalidad. Mira todos los códigos MQ - hay "tapas" en todas partes. Esta es la norma.
...
Y sin embargo este código para MT4/5 puede funcionar de forma diferente porque en MT4 el array se inicializa con valores NULL, y en MT5 puede ser una basura.
¿Qué tiene esto que ver con la antigua terminal? Si eres perezoso y sigues usando el antiguo, este es tu propio problema. La comunidad no debería ralentizarse por culpa de estos vagos.
Mira todos los códigos MQ - hay "tapas" en todas partes. Esta es la norma.
A la mierda la norma, aquí lo importante es la esencia, no el estilo que se lleva el 50% del código.
Que le den a la norma, lo que cuenta es la esencia, no el estilo que ocupa el 50% del código.
La principal tarea del foro es la EDUCACIÓN. Por lo tanto, el código debe ampliarse y entenderse lo más cerca posible de la norma.
Esto es exactamente lo que ocurre en los diccionarios reales; las funciones que se utilizan en ellos son resistentes a las colisiones, por lo que podemos afirmar sin lugar a dudas que el acceso a los elementos de estas colecciones es muy rápido y casi sin sobresaltos.
Es decir, para cada tarea es necesario encontrar un término medio entre el tamaño del diccionario (RAM) y la complejidad computacional de la función hash (CPU).
El objetivo principal del foro es educar. Por lo tanto, el código debe ser ampliado y comprendido
esto es suficiente.
lo más cerca posible de la norma.
Puede insertar sus propias cabeceras. A100 ha emitido cientos de informes en la SD sin tapones, ¡es la norma! Porque lo que importa es la esencia, no el oropel.
Hay una solución. Sin embargo, para mantener temporalmente la intriga, me gustaría publicar el extracto aquí. Además, las personas capaces compararán el rendimiento de mi solución y la solución proporcionada por el autor anterior. Me pregunto cuál funciona más rápido.