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