Индексированный последовательный поиск

Опубликовано: 5 Января, 2022

В этом методе поиска, прежде всего, создается индексный файл, который содержит некоторую определенную группу или раздел требуемой записи при получении индекса, затем частичная индексация занимает меньше времени, потому что она находится в указанной группе.

Примечание. Когда пользователь делает запрос на определенные записи, он сначала обнаруживает ту группу индексов, в которой записана эта конкретная запись.

Характеристики индексированного последовательного поиска:

  • В индексированном последовательном поиске отсортированный индекс откладывается в дополнение к массиву.
  • Каждый элемент в индексе указывает на блок элементов в массиве или на другой развернутый индекс.
  • Сначала выполняется поиск по индексу, затем по массиву, и направляет поиск в массиве.

Примечание. Индексированный последовательный поиск на самом деле выполняет индексацию несколько раз, например, при создании индекса для индекса.

Пояснения к диаграмме «Индексированный последовательный поиск»:

Код:

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.