Suponiendo que la comparación de cada elemento con la clave deseada lleva tiempo constante, la complejidad del peor de los casos es [matemática] O (n) [/ matemática], donde [matemática] n [/ matemática] es el número de elementos en la entrada. Esto se debe a que el peor de los casos siempre es “está en el último lugar donde miras” (aunque en esta situación, no irónicamente). Tenemos que mirar cada elemento para determinar si es el correcto, y en el peor de los casos. Tenemos que mirar todos los elementos.
Si quisiéramos obtener una tecnología súper técnica, podríamos preguntar cuánto tiempo nos llevó incrementar nuestro índice en la estructura de datos, en una máquina de acceso aleatorio. Afortunadamente, incrementar un número en 1, mientras que en el peor de los casos es logarítmico (tenemos que modificar [math] \ log_2 n [/ math] bits), solo requiere un tiempo amortizado constante, por lo que no altera nuestra estimación.
Si la clave deseada se distribuye uniformemente dentro del espacio de búsqueda, entonces tenemos [math] \ Theta (n) [/ math] tiempo esperado también porque en promedio tendremos que buscar a la mitad de la colección.
- ¿Cuáles son las mejores pautas que una persona puede seguir para mejorar sus habilidades de resolución de problemas?
- ¿Qué es mejor para la programación competitiva, la introducción del MIT a los algoritmos o los tutoriales de TopCoder?
- ¿Necesito tener el conocimiento de las estructuras de datos y el algoritmo, antes de comenzar a practicar en spoj, codchef, topcoder, etc.? Sé un poco de C ++.
- ¿Qué es más importante, aprender múltiples lenguajes de programación o practicar algoritmos?
- ¿Cuándo Quicksort tiene su peor complejidad de tiempo de caso?