Búsqueda lineal: ejemplo de Python, C++

¿Qué es Se?archi¿Algoritmo?

Un searchiEl algoritmo ng está diseñado para encontrar un elemento u objeto de una colección de elementos u objetos con una estructura de datos determinada. Por ejemplo, busque la altura mínima de una lista de alturas determinada, o busque la marca más alta de una lista o matriz de numbers. Pocos se popularesarching algorithms incluyen “Búsqueda lineal”, “Búsqueda binaria”, “Búsqueda por salto”, “Búsqueda de Fibonacci”, etc.

¿Qué es la búsqueda lineal?

La búsqueda lineal es una de las búsquedas más simples. algorithms. A partir de una lista o matriz determinada, busca el elemento determinado uno por uno. La búsqueda lineal itera sobre toda la lista y comprueba si algún elemento en particular es igual al elemento de búsqueda. También se le llama el búsqueda secuencial.

¿Qué hace la función de búsqueda lineal?

Una matriz de números enteros se da como "Numbers”, y una variable “elemento” contiene el número entero a buscar.

Ahora, el algoritmo de búsqueda lineal puede proporcionar lo siguientewing salida:

  • “-1”; esto significa que el elemento dado no se encuentra en la matriz
  • Cualquier número entre 0 y n-1; significa que se encuentra el elemento de búsqueda y devuelve el índice del elemento en la matriz. Aquí, "n" representa el tamaño de la matriz.

¿Cómo funciona la búsqueda lineal?

Digamos que una matriz que contiene un número entero numbers. La tarea consiste en encontrar un número determinado en la matriz.

  • Si el número está ubicado en la matriz, debemos devolver el índice de ese número.
  • Si no se encuentra el número dado, devolverá -1.

En el diagrama de flujo, "Datos" es la matriz de números enteros, "N" es el tamaño de la matriz y el "elemento" es el número que queremos buscar en la matriz.

Diagrama de flujo para el algoritmo de búsqueda lineal:

Diagrama de flujo para el algoritmo de búsqueda lineal

Estos son los pasos del diagrama de flujo:

Paso 1) Lea el elemento de búsqueda, "elemento".

Paso 2) Iniciar i=0 e index=-1

Paso 3) Si i<N, vaya al paso 4. En caso contrario, vaya al paso 8.

Paso 4) Si Datos[i] es igual a "elemento", vaya al paso 5. De lo contrario, vaya al paso 6.

Paso 5) Índice = i (Ya que el artículo se encuentra en el índice no i). Vaya al paso 8.

Paso 6) yo = yo +1.

Paso 7) Vaya al paso 3.

Paso 8) Detener.

Para simplificar, proporcionamos un ejemplo con una matriz de números enteros. La búsqueda lineal también es aplicable en cadenas, matrices de objetos o estructuras.

Pseudocódigo para algoritmo de búsqueda secuencial

function linearSearch: in →Data[], item
foundAt = -1
for i in (0 to data.length): if data[i] equals item
// item is found in the array
// returning the index
return i
// item not found in the array
// -1 means no item found, as negative index is not valid
return -1

Ejemplo de código C++ de búsqueda lineal

#include < bits / stdc++.h >
    using namespace std;
int linearSearch(int * arr, int item, int n) {
    int idx = -1;
    for (int i = 0; i < n; i++) {
        if (arr[i] == item) {
            idx = i;
            break;
        }
    }
    return idx;
}
int main() {
    int array[] = {
        1, 9, 8, 7, 6, 3, 11, 4, 6, 9, 7, 2, 0, 19, -10
    };
    int n = sizeof(array) / sizeof(arr[0]);
    int item;
    cout << "Enter a number to search: ";
    cin >> item;
    int idx = linearSearch(arr, item, n);
    if (idx >= 0) {
        cout << item << " is found at index " << idx << endl;
    } else {
        cout << "Could not find " << item << " in the array" << endl;
    }
}

Salida:

Enter a number to search: -10
-10 is found at index 14

Ejemplo de búsqueda lineal de código Python

def linearSearch(data, item):
    for i in range(len(data)):
    if data[i] == item:
    return i
return -1
data = [1, 9, 8, 7, 6, 3, 11, 4, 6, 9, 7, 2, 0, 19, -10]
item = int(input("Enter a number to search: "))
idx = linearSearch(data, item)
if idx >= 0:
    print("{} is found at index {}".format(item, idx))
else :
    print("{} was not found".format(item))

Salida:

Enter a number to search: -10
-10 is found at index 14

¿CómoplexAnálisis de calidad del algoritmo de búsqueda lineal

Generalmente, tiempo complexidad significa la cantidad de tiempo de CPU para realizar una determinada tarea. En el algoritmo de búsqueda lineal, la tarea es encontrar la clave de búsqueda a partir del elemento de la matriz.

Tres tipos de tiempo complexidades son:

  • Worst Case Scenario
  • En el mejor de los casos
  • Escenario de caso promedio

Tiempo Complexidad de la búsqueda lineal en el peor de los casos:

Digamos que necesitamos realizar una búsqueda lineal en una matriz con un tamaño de "n". Podemos encontrar el elemento de búsqueda entre el índice 0 y n-1. En el peor de los casos, el algoritmo intentará hacer coincidir todos los elementos de la matriz con el elemento de búsqueda.

En ese caso, el peor de los casos complexLa ciudad será O (n). Aquí, la notación "O" -big O significa la complexfunción de idad.

Tiempo Complexidad de la búsqueda lineal en el mejor de los casos:

Digamos que somos searching para un elemento que reside en la primera posición de la matriz. En este escenario, el algoritmo de búsqueda lineal no buscará los n elementos de la matriz. entonces la complexLa ciudad será O(1). Esto significa tiempo constante.

Tiempo Complexidad de la búsqueda lineal en un escenario de caso promedio:

Cuando se encuentra un elemento en el índice medio de la matriz, entonces se puede decir que el caso promedio complexLa velocidad para la búsqueda lineal es O(N), donde N significa la longitud de la matriz.

el espacio complexidad del algoritmo de búsqueda lineal

comunicación espacialplexLa calidad para la búsqueda lineal es siempre O (N) porque no necesitamos almacenar ni usar ningún tipo de variable temporal en la función de búsqueda lineal.

Cómo mejorar el algoritmo de búsqueda lineal

La búsqueda se puede realizar varias veces durante el ciclo de vida del programa. También es posible que estemos ejecutando el algoritmo de búsqueda lineal y searching para cualquier clave específica varias veces. Podemos utilizar el “Algoritmo de búsqueda binaria”si la matriz es una matriz ordenada.

Supongamos que la matriz consta de 10 mil numbers, y el elemento de destino se encuentra en el índice 5000. Entonces, el algoritmo intentará comparar 5000 elementos. Ahora, las comparaciones son tareas que requieren mucho uso de la CPU. Para optimizar el algoritmo de búsqueda lineal, tenemos dos opciones.

  • Transposición
  • Mover al frente

Transposición:

En este método, intercambiaremos el elemento de búsqueda con su elemento anterior en la matriz. Por ejemplo, digamos que tienes una matriz como la siguientewing:

Datos[] = {1,5,9,8,7,3,4,11}

Ahora queremos buscar 4. Pasos de la Transposición:

Transposición en búsqueda lineal

Paso 1) El “4” se encuentra en el índice 6. Se necesitaron seis comparaciones.

Paso 2) Intercambiar datos[6] y datos[5]. Entonces la matriz de datos se verá así:

Datos[] = {1,5,9,8,7,4,3,11}

Paso 3) Busca 4 nuevamente. Encontrado en el índice 5. Esta vez se necesitaron cinco comparaciones.

Paso 4) Intercambiar datos [5] y datos [4]. Entonces la matriz de datos se verá así:

Datos [] = {1,5,9,8,4,7,3,11}

Ahora, si se da cuenta, cuanto más frecuentemente se busca una clave, más disminuye el índice. Disminuyendo así el número de comparaciones.

Pasar al frente:

En este método, intercambiamos el elemento de búsqueda en el índice 0. Porque si se busca nuevamente, podemos encontrarlo en el momento O(1).

Mover al frente en búsqueda lineal

Aplicación del algoritmo de búsqueda lineal

A continuación se muestran algunas aplicaciones de búsqueda lineal que podemos utilizar.

  • Para matrices de tamaño pequeño o solo unos pocos elementos en la lista, es más fácil utilizar la búsqueda lineal.
  • El método de búsqueda lineal se puede utilizar en modo simple o matrices multidimensionales u otras estructuras de datos.
  • Generalmente, la búsqueda lineal es simple y eficiente para realizar una búsqueda en datos "desordenados". Podemos recuperar fácilmente un solo dato de la lista desordenada dada.