Cuando se trabaja con matrices de datos en la programaci n, a veces es necesario encontrar algunos elementos m s peque os. Esto generalmente se hace ordenando la matriz y tomando los primeros elementos. Sin embargo, hay una manera de encontrar los tres elementos m s peque os en una sola pasada a trav s de una matriz sin ordenar.
El algoritmo consta de tres pasos:
- Inicializar las tres variables min1, min2 y min3 con valores "infinito".
- Recorra todos los elementos de la matriz y actualice los valores min1, min2 y min3 si el elemento actual es menor que el valor actual de una de las variables min.
- Despu s de pasar obtenemos las tres variables con los valores m s bajos.
Este enfoque le permite encontrar los tres elementos m s peque os en una sola pasada en una matriz, lo que acelera significativamente la ejecuci n del programa en comparaci n con ordenar la matriz y tomar los primeros tres elementos.
- Algoritmo para encontrar los tres elementos m s peque os
- Establecimiento de objetivos
- Soluci n por el m todo de una sola pasada en una matriz
- Ejemplo de algoritmo
- Pregunta-respuesta
- C mo encontrar los tres elementos m s peque os en una matriz?
- Qu algoritmo usar para encontrar los tres elementos m s peque os?
- Hay alguna manera de encontrar los tres elementos m s peque os en una sola pasada a trav s de una matriz?
- C mo encuentro los tres n meros m s peque os en una matriz sin usar la clasificaci n?
Algoritmo para encontrar los tres elementos m s peque os
Para encontrar los tres elementos m s peque os en una matriz en una sola pasada, debe ejecutar el siguiente algoritmo:
- Inicializar tres variables (min1, min2, min3) con valores que se garantiza que son m s grandes que todos los elementos de la matriz, por ejemplo, los valores m ximos del tipo de datos de la matriz.
- Repase todos los elementos de la matriz y compare cada elemento con los valores actuales de las variables min1, min2 y min3.
- Si el valor del elemento es menor que min1, a continuaci n, reasignar min3 = min2, min2 = min1, min1 = valor del elemento.
- Si el valor del elemento es mayor que min1 y menor que min2, reasignar min3= min2, min2 = valor del elemento.
- Si el valor del elemento es mayor que min2 y menor que min3, reasignar min3 = valor del elemento.
- Despu s de completar el recorrido de la matriz, las variables min1, min2 y min3 contendr n los tres elementos m s peque os.
Ejemplo de implementaci n de este algoritmo en JavaScript:
function findThreeSmallest(arr) {
let min1 = Number.MAX_SAFE_INTEGER;
let min2 = Number.MAX_SAFE_INTEGER;
let min3 = Number.MAX_SAFE_INTEGER;
for (let i = 0; i < arr.length; i++) {
if (arr[i] < min1) {
min3 = min2;
min2 = min1;
min1 = arr[i];
} else if (arr[i] > min1 && arr[i] < min2) {
min3 = min2;
min2 = arr[i];
} else if (arr[i] > min2 && arr[i] < min3) {
min3 = arr[i];
}
}
return [min1, min2, min3];
}
let numbers = [5, 2, 8, 1, 9, 3, 6];
let result = findThreeSmallest(numbers);
console.log(result); // [1, 2, 3]
[5, 2, 8, 1, 9, 3, 6] : 1, 2 3.
Establecimiento de objetivos
El desaf o es encontrar los tres elementos m s peque os en una matriz de n meros dada. Para resolver este problema, debe recorrer la matriz solo una vez.
Al resolver el problema, debe tener en cuenta las posibles opciones cuando la matriz puede ser:
- menos de tres elementos;
- exactamente tres elementos;
- m s de tres elementos.
Tambi n debe tener en cuenta que los elementos de la matriz pueden tener valores positivos y negativos, as como elementos repetitivos.
Como resultado, debe devolver los tres elementos m s peque os ordenados en orden ascendente.
Soluci n por el m todo de una sola pasada en una matriz
Para encontrar los tres elementos m s peque os en una matriz en una sola pasada, se puede usar el siguiente algoritmo:
- Inicializar tres variables para almacenar los tres elementos m s peque os.
- Recorra la matriz y en cada iteraci n compare el elemento actual de la matriz con las tres variables que almacenan los tres elementos m s peque os.
- Si el elemento actual es menor que la primera variable, actualizar las tres variables cambiando los valores.
- Si el elemento actual es mayor que la primera variable pero menor que la segunda variable, actualice la segunda y tercera variables.
- Si el elemento actual es mayor que la primera y la segunda variable, pero menor que la tercera variable, actualice solo la tercera variable.
- Despu s de recorrer toda la matriz, los elementos m s peque os encontrados se almacenar n en tres variables.
La ventaja de este enfoque es que la matriz se pasa solo una vez, por lo que el tiempo de ejecuci n del algoritmo es O(n), donde n es la longitud de la matriz.
Ejemplo de implementaci n de este algoritmo en Python:
def find_three_smallest_elements(arr):
if len(arr) < 3:
return " la Matriz debe contener al menos tres elementos."
smallest = arr[0]
second_smallest = arr[1]
third_smallest = arr[2]
para i en rango (3, len (arr)):
si arr [i] < menor:
third_smallest = second_smallest
second_smallest = m s peque o
m s peque o = arr[i]
elif arr [ i] < segundo_m s peque o:
third_smallest = second_smallest
second_smallest = arr[i]
elif arr [i] < tercero_m s peque o:
third_smallest = arr[i]
devuelve [m s peque o, segundo_m s peque o, tercero_m s peque o]
. Si la matriz contiene menos de tres elementos, la funci n devolver el mensaje de error correspondiente.
Ejemplo de algoritmo
Digamos que tenemos la siguiente matriz de n meros:
arr = [9, 5, 7, 2, 4, 1, 6, 8, 3]
Queremos encontrar los tres elementos m s peque os de esta matriz.
El algoritmo funciona de la siguiente manera:
- Inicializar tres variables: first, second y third con valores Infinity.
- Pasamos por cada elemento de la matriz.
- Si el elemento actual es menor que el valor de la variable first, actualizamos los valores de las variables first, second y third, respectivamente: third = second , second = first y first = elemento actual.
- Si el elemento actual es mayor que el valor de la variable first, pero menor que el valor de la variable second, actualizamos los valores de las variables second y third asign ndoles el valor del elemento actual.
- Si el elemento actual es mayor que el valor de la variable second, pero menor que el valor de la variable third, actualizamos el valor de la variable third en consecuencia.
Despu s de pasar por la matriz, los valores de las variables first, second y third contendr n los tres elementos m s peque os.
En nuestro ejemplo, despu s del trabajo del algoritmo, obtenemos los siguientes valores de variables:
first = 1
second = 2
third = 3
Por lo tanto, los tres elementos m s peque os de la matriz arr son 1, 2 y 3.
Pregunta-respuesta
C mo encontrar los tres elementos m s peque os en una matriz?
Para buscar los tres elementos m s peque os en una matriz, puede usar el algoritmo de pase a pase nico. El algoritmo consiste en recorrer una vez la matriz y en cada iteraci n comparar el elemento actual con los tres elementos m s peque os encontrados. Si el elemento actual es menor que al menos uno de ellos, entonces toma su lugar y los elementos restantes se desplazan en consecuencia. Al final del pase, las tres variables almacenar n los tres elementos m s peque os de la matriz.
Qu algoritmo usar para encontrar los tres elementos m s peque os?
Para buscar los tres elementos m s peque os en una matriz, puede usar el algoritmo de pase a pase nico. El algoritmo consiste en pasar una vez por la matriz y en cada iteraci n comparar el elemento actual con los tres elementos m s peque os encontrados. Si el elemento actual es menor que al menos uno de ellos, entonces toma su lugar y los elementos restantes se desplazan en consecuencia. Como resultado, el algoritmo almacenar los tres elementos m s peque os de la matriz en tres variables.
Hay alguna manera de encontrar los tres elementos m s peque os en una sola pasada a trav s de una matriz?
S , hay un algoritmo de "pase a pase" que le permite encontrar los tres elementos m s peque os en una sola pasada a trav s de una matriz. El algoritmo consiste en comparar el elemento actual con los tres elementos m s peque os encontrados en cada iteraci n del pase. Si el elemento actual es menor que al menos uno de ellos, entonces toma su lugar y los elementos restantes se desplazan en consecuencia. Como resultado de este paso, las tres variables almacenar n los tres elementos m s peque os de la matriz.
C mo encuentro los tres n meros m s peque os en una matriz sin usar la clasificaci n?
Para buscar los tres n meros m s peque os en una matriz sin usar la clasificaci n, puede usar el algoritmo "pase a pase". Al comienzo de una pasada, se pueden inicializar tres variables que almacenar n los tres n meros m s peque os. Luego, en cada iteraci n del pase, compare el elemento actual con esas variables. Si el elemento actual es menor que al menos uno de ellos, entonces toma su lugar y los n meros restantes se desplazan en consecuencia. Despu s del final de la pasada, las tres variables almacenar n los tres n meros m s peque os de la matriz.