Sí. Y no.
Considere dos listas ordenadas L1 y L2, que tienen tamaños s1 y s2. El tiempo lineal significa que se necesita O (s1 + s2) para ejecutarse.
El algoritmo puede ser así: tome los primeros elementos de cada lista y compárelos. Si es “igual”, entonces es común, así que agréguelo a la lista de salida. Si “no es igual”, tome el siguiente elemento de la lista que dio el elemento inferior. Haga esta comparación en un bucle.
Cuando una lista está completa, no es necesario repasar los elementos restantes de la otra lista.
Por lo tanto, siempre será lineal. Pero puede que no sea necesario verificar todos los elementos s1 + s2 (que es el peor de los casos), por lo que respondería a su pregunta como Sí, si quiere decir “menos de tiempo lineal” en el caso promedio.
Ahora puede haber otras estructuras de datos (por ejemplo, listas de omisión) que brinden mejores soluciones, pero para las listas (de las que trata esta pregunta) cada elemento de al menos una lista DEBE ser procesado. Por lo tanto, no es posible hacerlo mejor que el tiempo lineal, por lo que respondería su pregunta como NO.
- ¿Cuál es tu identidad favorita en combinatoria?
- ¿La criptografía es un arte o una ciencia?
- Geometría: ¿Cómo se distribuye uniformemente (igualmente espacio) 36 puntos de ancho y un triángulo rectángulo isósceles? Sé cómo distribuir uniformemente los puntos a través de un rectángulo (coloque los puntos en 0 a la longitud del lado en incrementos de (longitud del lado) / (raíz (36)), pero ¿cómo haría uno para un triángulo?
- Cómo convertir [matemáticas] (- 27) _ {10} [/ matemáticas] a una magnitud con signo binario a mano
- ¿Cuál es el propósito del software matemático computacional?