Búsqueda secuencial indexada

En este método de búsqueda, en primer lugar, se crea un archivo de índice que contiene algún grupo específico o división del registro requerido cuando se obtiene el índice, luego la indexación parcial lleva menos tiempo porque se encuentra en un grupo específico.

Nota: Cuando el usuario realiza una solicitud de registros específicos, encontrará primero ese grupo de índice donde se registra ese registro específico.

Características de la búsqueda secuencial indexada:

  • En la búsqueda secuencial indexada, se reserva un índice ordenado además de la array.
  • Cada elemento en el índice apunta a un bloque de elementos en la array u otro índice expandido.
  • El índice se busca primero, luego la array y guía la búsqueda en la array.

Nota: La búsqueda secuencial indexada en realidad realiza la indexación varias veces, como crear el índice de un índice. 
 

Explicación por diagrama “Búsqueda Secuencial Indexada”:

Código:

C

// C program for Indexed Sequential Search
#include <stdio.h>
#include <stdlib.h>
 
void indexedSequentialSearch(int arr[], int n, int k)
{
    int GN = 3; // GN is group number that is number of
                // elements in a group
    int elements[GN], indices[GN], i, set = 0;
    int j = 0, ind = 0, start, end;
    for (i = 0; i < n; i += 3) {
 
        // Storing element
        elements[ind] = arr[i];
 
        // Storing the index
        indices[ind] = i;
        ind++;
    }
    if (k < elements[0]) {
        printf("Not found");
        exit(0);
    }
    else {
        for (i = 1; i <= ind; i++)
            if (k <= elements[i]) {
                start = indices[i - 1];
                end = indices[i];
                set = 1;
                break;
            }
    }
    if (set == 0) {
        start = indices[GN - 1];
        end = GN;
    }
    for (i = start; i <= end; i++) {
        if (k == arr[i]) {
            j = 1;
            break;
        }
    }
    if (j == 1)
        printf("Found at index %d", i);
    else
        printf("Not found");
}
 
// Driver code
void main()
{
 
    int arr[] = { 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
    int n = sizeof(arr) / sizeof(arr[0]);
 
    // Element to search
    int k = 8;
    indexedSequentialSearch(arr, n, k);
}

Java

// Java program for Indexed Sequential Search
 
import java.io.*;
 
class GFG {
 
    static void indexedSequentialSearch(int arr[], int n,
                                        int k)
    {
        int elements[] = new int[20];
        int indices[] = new int[20];
        int temp, i;
        int j = 0, ind = 0, start = 0, end = 0, set = 0;
        for (i = 0; i < n; i += 3) {
 
            // Storing element
            elements[ind] = arr[i];
 
            // Storing the index
            indices[ind] = i;
            ind++;
        }
        if (k < elements[0]) {
            System.out.println("Not found");
            return;
        }
        else {
            for (i = 1; i <= ind; i++)
                if (k <= elements[i]) {
                    start = indices[i - 1];
                    set = 1;
                    end = indices[i];
                    break;
                }
        }
        if (set == 0) {
            start = indices[i - 1];
            end = n;
        }
        for (i = start; i <= end; i++) {
            if (k == arr[i]) {
                j = 1;
                break;
            }
        }
        if (j == 1)
            System.out.println("Found at index " + i);
        else
            System.out.println("Not found");
    }
 
    // Driver code
 
    public static void main(String[] args)
    {
        int arr[] = { 6, 7, 8, 9, 10 };
        int n = arr.length;
 
        // Element to search
        int k = 8;
        indexedSequentialSearch(arr, n, k);
    }
}
// This code is contributed by shs..

Python3

# Python program for Indexed
# Sequential Search
 
 
def indexedSequentialSearch(arr, n, k):
 
    elements = [0] * 20
    indices = [0] * 20
    j, ind, start, end = 0, 0, 0, 0
    set_flag = 0
     
    for i in range(0, n, 3):
 
        # Storing element
        elements[ind] = arr[i]
 
        # Storing the index
        indices[ind] = i
        ind += 1
 
    if k < elements[0]:
        print("Not found")
        exit(0)
 
    else:
 
        for i in range(1, ind + 1):
            if k <= elements[i]:
                start = indices[i - 1]
                end = indices[i]
                set_flag = 1
                break
    if set_flag == 0:
        start = indices[i-1]
        end = n
    for i in range(start, end + 1):
        if k == arr[i]:
            j = 1
            break
 
    if j == 1:
        print("Found at index", i)
    else:
        print("Not found")
 
 
# Driver code
if __name__ == "__main__":
 
    arr = [6, 7, 8, 9, 10]
    n = len(arr)
 
    # Element to search
    k = 8
 
    # Function call
    indexedSequentialSearch(arr, n, k)
 
# This code is contributed by Ryuga

C#

// C# program for Indexed Sequential Search
 
using System;
 
class GFG {
     
 
 
static void indexedSequentialSearch(int []arr, int n, int k)
{
    int []elements = new int[20];
    int []indices = new int[20];
    int  i;
    int j = 0, ind = 0, start=0, end=0, set = 0;
    for (i = 0; i < n; i += 3) {
 
        // Storing element
        elements[ind] = arr[i];
 
        // Storing the index
        indices[ind] = i;
        ind++;
    }
    if (k < elements[0]) {
        Console.Write("Not found");
        return;
         
    }
    else {
        for (i = 1; i <= ind; i++)
            if (k <= elements[i]) {
                start = indices[i - 1];
                  set = 1;
                end = indices[i];
                break;
            }
    }
      if(set == 0)
    {
          start = indices[i-1];
          end = n-1;
    }
    for (i = start; i <= end; i++) {
        if (k == arr[i]) {
            j = 1;
            break;
        }
    }
    if (j == 1)
        Console.WriteLine("Found at index "+ i);
    else
        Console.WriteLine("Not found");
}
 
// Driver code
 
    public static void Main () {
        int []arr = { 6, 7, 8, 9, 10 };
        int n = arr.Length;
 
        // Element to search
        int k = 10;
        indexedSequentialSearch(arr, n, k);
    }
}
// This code is contributed by shs..

PHP

<?php
// PHP program for Indexed Sequential Search
 
function indexedSequentialSearch($arr, $n, $k)
{
    $elements = array();
    $indices = array();
    $temp = array();
    $j = 0; $ind = 0; $start=0; $end=0; $set = 0;
    for ($i = 0; $i < $n; $i += 3)
    {
 
        // Storing element
        $elements[$ind] = $arr[$i];
 
        // Storing the index
        $indices[$ind] = $i;
        $ind++;
    }
     
    if ($k < $elements[0])
    {
        echo "Not found";
 
    }
    else
    {
        for ($i = 1; $i <=$ind; $i++)
            if ($k < $elements[$i])
            {
                $start = $indices[$i - 1];
                 $set = 1;
                $end = $indices[$i];
                break;
            }
    }
      if($set == 1)
    {
          $start = $indices[$i-1];
          $end = $n;
    }
    for ($i = $start; $i <=$end; $i++)
    {
        if ($k == $arr[$i])
        {
            $j = 1;
            break;
        }
    }
    if ($j == 1)
        echo "Found at index ", $i;
    else
        echo "Not found";
}
 
// Driver code
$arr = array( 6, 7, 8, 9, 10 );
$n = count($arr);
 
// Element to search
$k = 10;
indexedSequentialSearch($arr, $n, $k);
 
// This code is contributed by shs..
?>
Producción: 

Found at index 2

 

Publicación traducida automáticamente

Artículo escrito por Sabya_Samadder y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *