Skip to main content

Cómo Encontrar Un Número En Una Matriz: Métodos Básicos Y Ejemplos

Encontrar un n mero en una matriz es una tarea importante que a menudo ocurre cuando se desarrollan programas o se analizan datos. Ya sea una matriz de n meros, cadenas o elementos m s complejos, encontrar el valor correcto puede ser dif cil y requerir cierto conocimiento y habilidad.

En este art culo, veremos los m todos b sicos para encontrar un n mero en una matriz y daremos ejemplos de su uso. Dominar estas t cnicas lo ayudar a manejar las tareas relacionadas con la b squeda de n meros en una matriz de manera m s eficiente y segura.

La b squeda lineal es un enfoque simple y directo para encontrar un n mero en una matriz. Es que revisamos cada elemento de la matriz a su vez y lo comparamos con el valor que necesitamos encontrar. Si se encuentra un valor coincidente, devolvemos su ndice en la matriz.

Debe tenerse en cuenta que la b squeda lineal es el m todo m s simple, pero puede que no sea el m s eficiente, especialmente si la matriz contiene una gran cantidad de elementos. En tales casos, es til considerar algoritmos m s complejos, como la b squeda binaria o la b squeda con tablas hash.

  1. Qu es una matriz
  2. M todos para encontrar un n mero en una matriz
  3. M todo de b squeda lineal
  4. M todo de b squeda binaria
  5. M todo de b squeda de interpolaci n
  6. M todos de b squeda utilizando funciones est ndar
  7. B squeda lineal de n meros
  8. B squeda de n meros binarios
  9. B squeda de n meros interpolados
  10. Tablas hash para encontrar un n mero
  11. Ejemplos de encontrar un n mero en una matriz
  12. 1. B squeda lineal
  13. 2. B squeda binaria
  14. 3. Uso de m todos de matriz en l nea
  15. M todo indexOf()
  16. M todo find()
  17. M todo findIndex ()
  18. 4. Usando recursi n
  19. Ejemplo de b squeda lineal de n meros
  20. Ejemplo de b squeda de n meros binarios
  21. Ejemplo de b squeda de n meros interpolados
  22. Pregunta-respuesta

Qu es una matriz

Una matriz es una estructura de datos que le permite almacenar y organizar muchos elementos del mismo tipo dentro de una sola variable. Cada elemento de la matriz tiene su propio ndice que le permite acceder a los elementos de la matriz.

Las matrices son herramientas de programaci n b sicas y se usan ampliamente en muchos lenguajes de programaci n. Permiten almacenar y procesar grandes cantidades de datos de manera eficiente.

Las matrices pueden contener elementos de cualquier tipo de datos: n meros, cadenas, booleanos e incluso otras matrices. Es importante tener en cuenta que los ndices de matriz comienzan en 0, lo que significa que el primer elemento de la matriz tiene un ndice de 0, el segundo tiene un ndice de 1, y as sucesivamente.

.

Las matrices pueden ser unidimensionales y multidimensionales. Una matriz unidimensional es una matriz que contiene elementos dispuestos en una l nea. Las matrices multidimensionales son matrices que contienen elementos dispuestos en una tabla o cuadr cula.

Ejemplo de matriz unidimensional:

var numbers = [1, 2, 3, 4, 5];

Ejemplo de matriz multidimensional:

var matrix = [

[1, 2, 3],

[4, 5, 6],

[7, 8, 9]

];

Las matrices son una herramienta poderosa cuando se trata de datos y se utilizan ampliamente en la programaci n para una variedad de tareas.

M todos para encontrar un n mero en una matriz

Hay varios m todos para encontrar un n mero en una matriz. Cada m todo tiene sus propias caracter sticas y eficacia. En esta secci n veremos los m todos m s comunes.

M todo de b squeda lineal

El m todo de b squeda lineal es la forma m s simple y m s com n de buscar un n mero en una matriz. Consiste en comparar secuencialmente cada elemento de la matriz con el n mero buscado.

Algoritmo:

  1. Pasamos por la matriz desde el primer hasta el ltimo elemento.
  2. Comparamos cada elemento con el n mero buscado.
  3. Si el elemento es igual al n mero deseado, devolveremos su ndice.
  4. Si llega al final de la matriz y el n mero buscado no se encuentra, devolveremos -1.

M todo de b squeda binaria

El m todo de b squeda binaria solo se aplica a matrices ordenadas. Funciona dividiendo la matriz en dos partes y comparando el n mero buscado con el elemento central de cada parte.

Algoritmo:

  1. Establece los l mites izquierdo y derecho de la b squeda.
  2. Mientras el l mite izquierdo no exceda el l mite derecho, realice los siguientes pasos::
    1. Encontramos el centro de la matriz.
    2. Comparamos el n mero buscado con el elemento central.
    3. Si el n mero buscado es igual al elemento central, devolveremos su ndice.
    4. Si el n mero buscado es menor que el elemento central, actualizamos el borde derecho.
    5. Si el n mero buscado es mayor que el elemento central, actualizamos el borde izquierdo.
  3. Si el n mero buscado no se encuentra, devuelve -1.

M todo de b squeda de interpolaci n

El m todo de b squeda de interpolaci n utiliza la interpolaci n lineal para encontrar la posici n aproximada del n mero buscado en una matriz supuestamente distribuida uniformemente.

Algoritmo:

  1. Establece los l mites izquierdo y derecho de la b squeda.
  2. Mientras el l mite izquierdo no exceda el l mite derecho y el n mero deseado est dentro de los l mites, realice los siguientes pasos::
    1. Calculamos la posici n aproximada del n mero buscado.
    2. Comparamos el n mero buscado con el elemento de matriz en la posici n aproximada.
    3. Si el n mero buscado es igual a un elemento en la posici n aproximada, devolveremos su ndice.
    4. Si el n mero buscado es menor que el elemento en la posici n aproximada, actualice el borde derecho.
    5. Si el n mero buscado es mayor que el elemento en la posici n aproximada, actualice el borde izquierdo.
  3. Si el n mero buscado no se encuentra, devuelve -1.

M todos de b squeda utilizando funciones est ndar

Los lenguajes de programaci n como Python o JavaScript tambi n tienen funciones integradas para encontrar un n mero en una matriz:

  • Funci n incorporada "indexOf": Devuelve el ndice de la primera aparici n del n mero buscado en la matriz. Si no se encuentra el n mero, devuelve -1.
  • Funci n integrada"find": Devuelve el primer elemento de la matriz que satisface la condici n de la funci n dada. Si no hay tal elemento, devuelve "undefined".
  • Funci n incorporada "findIndex": Devuelve el ndice del primer elemento de la matriz que satisface la condici n de la funci n dada. Si no hay tal elemento, devuelve -1.

La elecci n del m todo para encontrar un n mero en una matriz depende de su Tama o, el orden de la matriz y los requisitos de rendimiento. Utilice el m todo adecuado caso por caso.

B squeda lineal de n meros

La b squeda lineal es uno de los algoritmos m s simples y m s comunes para encontrar un n mero en una matriz. Este m todo realiza un recorrido secuencial a trav s de los elementos de la matriz, comparando cada elemento con el n mero buscado.

El algoritmo de b squeda lineal funciona de la siguiente manera:

  1. Comenzamos a comparar los elementos de la matriz con el n mero buscado, comenzando con el primer elemento.
  2. Si el elemento actual es igual al n mero buscado, encontramos el n mero buscado en la matriz y completamos la b squeda.
  3. Si el elemento actual no es igual al n mero deseado, continuamos comparando con el siguiente elemento.
  4. Repita los pasos 2 y 3 hasta que todos los elementos de la matriz est n validados.
  5. Si despu s de verificar todos los elementos no se encuentra el n mero buscado, se puede concluir que el n mero buscado no est en la matriz.

Ejemplo de implementaci n de una b squeda lineal de un n mero en JavaScript:

function linearSearch(arr, target) {

for (let i = 0; i < arr.length; i++) {

if (arr[i] === target) {

return I; / / devuelve el ndice del n mero encontrado

}

}

return -1; // devuelve -1 si el n mero buscado no est en la matriz

}

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const targetNumber = 5;

const result = linearSearch(numbers, targetNumber);

console.log(result);

toma dos argumentos: una matriz y el n mero buscado. Pasa secuencialmente a trav s de los elementos de la matriz con un bucle for. Si se encuentra un n mero igual al buscado, la funci n devuelve su ndice. Si no se encuentra el n mero buscado, la funci n devuelve -1.

La b squeda lineal es un algoritmo simple e intuitivo, pero tiene algunas desventajas. La principal desventaja de la b squeda lineal es su complejidad temporal O(n), donde n es el n mero de elementos en la matriz. Con matrices grandes, la b squeda puede ralentizarse significativamente. Adem s, la b squeda lineal solo encuentra el primer elemento igual al n mero buscado si hay varios de esos elementos. En este caso, puede ser necesario utilizar otros m todos de b squeda para encontrar todas las ocurrencias.

B squeda de n meros binarios

La b squeda binaria es uno de los principales algoritmos para encontrar un elemento en una matriz ordenada. Se ejecuta m s all de O (log n) tiempo, donde n es el n mero de elementos en la matriz. Esto lo hace muy eficiente cuando se trata de grandes cantidades de datos.

El algoritmo de b squeda binaria funciona de la siguiente manera:

  1. Especifica la matriz ordenada en la que se realizar la b squeda.
  2. Establecer l mites de b squeda: el ndice inicial low se establece en 0 y el ndice final high en el ltimo ndice de matriz.
  3. Hasta que low sea mayor que high, se realizan las siguientes operaciones:
  4. Si el bucle finaliza, el n mero buscado no est presente en la matriz y se devuelve un valor especial, como -1, para indicar que no hay resultado.

La b squeda binaria es eficiente, ya que en cada iteraci n del algoritmo, la matriz se divide por la mitad y el n mero de elementos inspeccionados se reduce a la mitad con cada iteraci n.

Complejidad temporalEl mejor casoEl peor casoCaso medio
ComplejidadO(1)O(log n)O(log n)

La b squeda binaria es uno de los m todos de b squeda fundamentales en la programaci n y se aplica ampliamente en una variedad de tareas donde se requiere una b squeda r pida de elementos en datos ordenados. Dada su efectividad, vale la pena aprender este algoritmo y usarlo en sus proyectos.

B squeda de n meros interpolados

La b squeda de n meros interpolados es un algoritmo eficiente para encontrar un n mero en una matriz ordenada, basado en la interpolaci n lineal.

La idea b sica de la b squeda de interpolaci n es que podemos suponer aproximadamente la posici n del elemento buscado en una matriz, en funci n de su valor y los valores del primer y ltimo elemento de la matriz.

El algoritmo de b squeda de interpolaci n es el siguiente:

  1. Supongamos que el elemento est aproximadamente en el medio de la matriz.
  2. Encontramos la posici n de interpolaci n usando la f rmula:
  3. Si el valor en la posici n de interpolaci n coincide con el buscado, lo devolveremos.
  4. Si el valor en la posici n de interpolaci n es mayor que el n mero buscado, el n mero buscado se encuentra entre los valores de los elementos con posiciones low y pos 1. La b squeda contin a en la mitad izquierda de la matriz.
  5. Si el valor en la posici n de interpolaci n es menor que el n mero buscado, el n mero buscado se encuentra entre los valores de los elementos pos + 1 y high. La b squeda contin a en la mitad derecha de la matriz.
  6. Repita los pasos 2-5 hasta que se encuentre el n mero deseado o solo quede un elemento de la matriz.

La b squeda Interpolada de un n mero le permite encontrar el valor buscado m s r pido que la b squeda lineal normal si los elementos de la matriz se distribuyen uniformemente.

Sin embargo, tenga en cuenta que, en algunos casos, la b squeda de interpolaci n puede no ser eficiente y convertirse en una b squeda lineal normal, especialmente si los valores en la matriz no est n distribuidos uniformemente.

Ejemplo de c digo en Python:

def interpolation_search(arr, x):

low = 0

high = len(arr) - 1

while low = arr[low] and x <= arr[high]:

pos = low + int(((high - low) / (arr[high] - arr[low])) * (x - arr[low]))

if arr[pos] == x:

return pos

elif arr[pos] < x:

low = pos + 1

else:

high = pos - 1

return -1

#

arr = [10, 20, 30, 40, 50, 60, 70]

x = 40

result = interpolation_search(arr, x)

if result != -1:

print(" ", x, " ", result)

else:

print(" ", x, " ")

-

Las tablas hash son una estructura de datos que proporciona una capacidad eficiente para buscar elementos. Se basan en el principio de hash, en el que a cada elemento se le asigna una clave hash nica. Las tablas hash le permiten encontrar r pidamente un elemento por su clave.

Para buscar un n mero en una matriz utilizando una tabla hash, siga estos pasos::

  1. Crear una tabla hash.
  2. Recorrer la matriz de n meros y para cada n mero calcular su hash, que se utilizar como clave para la tabla hash.
  3. Agregue cada n mero y su hash a la tabla hash.
  4. Si es necesario, puede verificar la presencia de un n mero en la tabla hash por su hash.

Ventajas de usar tablas hash para encontrar un n mero:

  • Acceso r pido a los elementos. La b squeda en una tabla hash se realiza en tiempo constante O (1), lo que significa que el tiempo de b squeda es independiente del n mero de elementos en la tabla hash.
  • Uso eficiente de la memoria. Las tablas hash proporcionan una b squeda r pida en la memoria mediante el uso de hashes, lo que reduce la cantidad de memoria utilizada.

Las tablas hash son una herramienta efectiva para encontrar n meros en una matriz. Le permiten minimizar el tiempo de ejecuci n de la b squeda y usar la memoria de manera m s eficiente. Sin embargo, al usar tablas hash, debe tener en cuenta la posibilidad de colisiones: situaciones en las que se asigna el mismo hash a dos elementos diferentes. Se utilizan varios m todos para resolver este problema, como el m todo de encadenamiento o el direccionamiento abierto.

Ejemplos de encontrar un n mero en una matriz

A continuaci n se presentan algunos ejemplos de la b squeda de un n mero en una matriz utilizando diferentes m todos.

1. B squeda lineal

La b squeda lineal es la forma m s f cil y obvia de buscar un n mero en una matriz. Consiste en iterar secuencialmente sobre cada elemento de la matriz hasta que se encuentra el n mero buscado o se pasan todos los elementos de la matriz.

function linearSearch(arr, target) {

for (let i = 0; i < arr.length; i++) {

if (arr[i] === target) {

return i;

}

}

return -1;

}

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const targetNumber = 7;

const index = linearSearch(numbers, targetNumber);

console.log(index); // Output: 6

2. B squeda binaria

La b squeda binaria solo se aplica a matrices ordenadas. Comienza a comparar el n mero buscado con el elemento en el medio de la matriz y, si es mayor o menor, divide la matriz en dos mitades. , , .

function binarySearch(arr, target) {

let start = 0;

let end = arr.length - 1;

while (start <= end) {

let mid = Math.floor((start + end) / 2);

if (arr[mid] === target) {

return mid;

} else if (arr[mid] < target) {

start = mid + 1;

} else {

end = mid - 1;

}

}

return -1;

}

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const targetNumber = 7;

const index = binarySearch(numbers, targetNumber);

console.log(index); // Output: 6

3. Uso de m todos de matriz en l nea

.

M todo

devuelve el ndice de la primera aparici n del n mero buscado en la matriz, o -1 si no se encuentra el n mero.

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const targetNumber = 7;

const index = numbers.indexOf(targetNumber);

console.log(index); // Output: 6

M todo

devuelve el primer elemento de la matriz que cumple la condici n establecida en la funci n de devoluci n de llamada pasada.

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const targetNumber = 7;

const foundNumber = numbers.find((number) => number === targetNumber);

console.log(foundNumber); // Output: 7

M todo

devuelve el ndice del primer elemento de la matriz que cumple la condici n establecida en la funci n de devoluci n de llamada pasada, o -1 si no se encuentra dicho elemento.

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const targetNumber = 7;

const index = numbers.findIndex((number) => number === targetNumber);

console.log(index); // Output: 6

4. Usando recursi n

Un enfoque recursivo para encontrar un n mero en una matriz es dividir la matriz por la mitad y buscar recursivamente una de las mitades. Si se encuentra un n mero, se devuelve su ndice y, de lo contrario, se devuelve -1.

function recursiveSearch(arr, target, start, end) {

if (start > end) {

retorno -1;

}

sea mid = Matem ticas.piso ((inicio + fin) / 2);

if (arr [mid] = = = objetivo) {

regreso a mitad;

} else if (arr [mid] < destino) {

devuelve recursiveSearch (arr, target, mid + 1, end) ;

} else {

devuelve recursiveSearch (arr, target, start, mid - 1);

}

}

n meros const = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

n mero objetivo constante = 7;

ndice constante = recursiveSearch (n meros, n mero de destino, 0, n meros.longitud - 1);

consola.log( ndice); / / Salida: 6

La b squeda lineal es el m todo m s simple y b sico para buscar un n mero en una matriz. Realiza una b squeda comparando secuencialmente cada elemento de la matriz con un n mero objetivo.

Veamos un ejemplo de una b squeda lineal del n mero 5 en una matriz:

// Matriz de origen

int[] arr = {2, 4, 6, 8, 10, 12, 14, 16};

int target = 5; / / n mero Objetivo

// B squeda lineal

int index = -1; / / Variable para almacenar el ndice del n mero encontrado

for (int i = 0; i < arr.length; i++) {

if (arr[i] == target) {

index = i;

break; / / n mero Encontrado, salir del bucle

}

}

if (index != -1) {

System.out.println ("N mero" + target + "encontrado en la matriz, su ndice es:" + index);

} else {

System.out.println ("N mero" + target + "no encontrado en la matriz");

}

En este ejemplo, estamos buscando el n mero 5 en la matriz {2, 4, 6, 8, 10, 12, 14, 16}. Comparando constantemente cada elemento de la matriz con el n mero objetivo, lo encontramos en la quinta posici n e interrumpimos el ciclo. Como resultado, obtenemos la salida: "el N mero 5 se encuentra en la matriz, su ndice es 4".

La b squeda lineal es f cil de implementar, sin embargo, su eficiencia disminuye cuando se trabaja con matrices grandes. En tales casos, se recomienda utilizar algoritmos de b squeda num rica m s optimizados, como la b squeda binaria o las tablas hash.

Ejemplo de b squeda de n meros binarios

La b squeda de n meros binarios es un algoritmo eficiente para encontrar un valor en una matriz ordenada. Veamos un ejemplo simple de una b squeda binaria del n mero 7 en la siguiente matriz ordenada:

[1, 3, 4, 6, 7, 9, 11]

  1. Establecemos los valores iniciales de las variables low (l mite inferior) y high (l mite superior) en 0 y la longitud de la matriz menos 1, respectivamente.
  2. Calculamos el ndice promedio mid como una divisi n entera de la suma de low y high por 2.
  3. con el n mero 7 buscado.
  4. es 7, entonces el n mero encontrado y devolvemos el ndice mid.
  5. mayor que 7, luego actualizamos el valor de la variable high a mid-1 y pasamos al paso 2.
  6. menos de 7, luego actualizamos el valor de la variable low a mid + 1 y pasamos al paso 2.
  7. Repita los pasos 2-6 hasta que el valor de la variable low sea mayor que el valor de la variable high.
  8. Cuando el valor de la variable low se vuelve mayor que el valor de la variable high, significa que el n mero no se encuentra en la matriz y devolvemos el valor -1.

En nuestro ejemplo, el caso del n mero 7:

  1. low = 0, high = 6, mid = 3;
  2. array[mid] = 6 que es menor que 7;
  3. Cambiamos low a mid + 1, es decir, low = 4;
  4. Repita los pasos 2-6;
  5. low = 4, high = 6, mid = 5;
  6. array[mid] = 9 que es mayor que 7;
  7. Cambia high a mid-1, es decir, high = 4;
  8. low > high, devuelve -1;

Por lo tanto, el n mero 7 no se encuentra en la matriz.

La b squeda de n meros binarios es eficiente y le permite encontrar valores en matrices ordenadas utilizando un n mero significativamente menor de comparaciones que la b squeda lineal.

Ejemplo de b squeda de n meros interpolados

La b squeda de interpolaci n es un algoritmo de b squeda binaria mejorado que funciona con una matriz ordenada de n meros. A diferencia de la b squeda binaria, utiliza no solo el medio de la matriz, sino tambi n el valor del n mero en s para acercarse al valor buscado.

El proceso de b squeda de interpolaci n es la siguiente secuencia de acciones:

  1. mid = low + ((high - low) / (arr[high] - arr[low])) * (x - arr[low])
  2. Comparar el valor del elemento con el ndice
  3. high

).

Repita los pasos 1-2 hasta que se encuentre el n mero que busca o hasta que se verifiquen todos los elementos de la matriz.

Aqu hay un ejemplo de implementaci n de b squeda de interpolaci n en Python:

def interpolation_search(arr, x):

low = 0

high = len(arr) - 1

while low = arr[low] and x <= arr[high]:

if low == high:

if arr[low] == x:

return low

return -1

pos = low + ((high - low) // (arr[high] - arr[low])) * (x - arr[low])

if arr[pos] == x:

return pos

elif arr[pos] < x:

low = pos + 1

else:

high = pos - 1

return -1