Indexed Sequential Search

Indexed Sequential Search:

In this searching technique, first of all an index file is created that contains references to a group of records, once an index is obtained, the partial searching takes less time since it is to be located in the group/bucket specified by the index.  The program given below creates an index file for the employee records by grouping the records and then locates the required key by searching the index first and then returns the required record.  The program to implement indexed sequential search is given below:

/*Indexed Sequential Search*/

#include <stdio.h>
#include <conio.h>
#define MAX 10

struct mainfile
{int empid;
char name[25];
float basic;
};

struct indexfile
{int index_id;
int kindex;
};

void main()
{
struct mainfile fobj[MAX];
struct indexfile index[MAX];
int i,num,low,high,ct=4;
float basicsal;
clrscr();
for(i=0;i<MAX;i++)
{
printf(“nEnter employee id?”);
scanf(“%d”,&fobj[i].empid);
printf(“nEnter name?”);
scanf(“%s”,fobj[i].name);
printf(“nEnter basic?”);
scanf(“%f”,&basicsal);
fobj[i].basic=basicsal;
}
printf(“nNow creating index file…!”);
for(i=0;i<(MAX/5);i++)
{index[i].index_id=fobj[ct].empid;
index[i].kindex = ct;
ct=ct+5;
}

printf(“nnEnter the empid to search?”);
scanf(“%d”,&num);
for(i=0;(i<MAX/5) && (index[i].index_id<=num);i++);
low=index[i-1].kindex;
high=index[i].kindex;
for(i=low;i<=high;i++)
{if(num==fobj[i].empid)
{
printf(“nThe record is: nt”);
printf(“nEmpid: %d”,fobj[i].empid);
printf(“nName: %s”,fobj[i].name);
printf(“nBasic: %f”,fobj[i].basic);
getch();
return;
}
}
printf(“nNumber not found…!”);
return;
}