⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blksearch.cpp

📁 该程序 可以用于实现数据结构中的分块查找
💻 CPP
字号:
//分块查找的程序代码
#include<stdio.h>
//类型定义
typedef int keytype;
typedef struct
{
	keytype key;
	int low,high;
}index;
typedef struct
{
	keytype key;
}record;
const int recN=18;
const int idxN=3;

int blksearch(record[],index[],keytype,int);
void main()
{
	record r[recN]={22,12,13,8,9,20,33,42,44,38,24,48,60,58,74,49,86,53};
	index idx[idxN]={{22,0,5},{48,6,11},{86,12,17}};
	keytype key;
	int loc,i;
	printf("待查找的记录关键字表:\n");
	for(i=0;i<recN;i++)
		printf("%5d",r[i]);
	printf("\n");
	printf("输入所要查找记录的关键字:");
	scanf("%d",&key);
	loc=blksearch(r,idx,key,idxN);
	if(loc!=-1) printf("查找到,是第%d个记录。\n",loc+1);
	else printf("记录查找不到!\n");
}

//添加折半查找索引表,块内顺序查找算法
int blksearch(record r[],index idx[],keytype t,int n)
{	int i,mid,k=0,low=0,high=n;
	while(low<=high)
	{	mid=(low+high)/2;
		if(t<=idx[mid].key&&(t>idx[mid-1].key||mid==0))
		{ for( i=idx[mid].low;i<=idx[mid].high;i++)
		   if(t==r[i].key) return i;
			 return -1;
		
		}
		else if(t>idx[mid].key)
			low=mid+1;
		else high=mid-1;
	
	}
return -1;
	
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -