Индексированный последовательный поиск
В этом методе поиска, прежде всего, создается индексный файл, который содержит некоторую определенную группу или раздел требуемой записи при получении индекса, затем частичная индексация занимает меньше времени, потому что она находится в указанной группе.
Примечание. Когда пользователь делает запрос на определенные записи, он сначала обнаруживает ту группу индексов, в которой записана эта конкретная запись.
Характеристики индексированного последовательного поиска:
- В индексированном последовательном поиске отсортированный индекс откладывается в дополнение к массиву.
- Каждый элемент в индексе указывает на блок элементов в массиве или на другой развернутый индекс.
- Сначала выполняется поиск по индексу, затем по массиву, и направляет поиск в массиве.
Примечание. Индексированный последовательный поиск на самом деле выполняет индексацию несколько раз, например, при создании индекса для индекса.
Пояснения к диаграмме «Индексированный последовательный поиск»:
Код:
C
// C program for Indexed Sequential Search #include <stdio.h> #include <stdlib.h> void indexedSequentialSearch( int arr[], int n, int k) { int elements[20], indices[20], temp, 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[i - 1]; end = n; } 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 }; int n = sizeof (arr) / sizeof (arr[0]); // Element to search int k = 8; indexedSequentialSearch(arr, n, k); } |
Джава
// 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.. ?> |
Найдено по индексу 2
Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.