索引顺序表(分块查找)
来源:互联网 发布:小区内的网络超市 编辑:程序博客网 时间:2024/06/08 15:01
索引顺序表(分块查找)
原文章 分块查找
#include<stdio.h>#include<malloc.h>#define MAXSIZE 25#define MAX 5 //索引表的最大长度int a[MAXSIZE]={8,14,6,9,10,22,34,18,19,31,40,38,54,66,46,71,78,68,80,85,100,94,88,96,87};typedef struct{ int key; //关键字 int link; //指向对应块的起始下标}IdxType;IdxType IDX[MAX];void InitIDX() //索引表初始化{ IDX[0].key=14; IDX[0].link=0; IDX[1].key=34; IDX[1].link=5; IDX[2].key=66; IDX[2].link=10; IDX[3].key=85; IDX[3].link=15; IDX[4].key=100; IDX[4].link=20;}typedef struct{ int data[MAXSIZE]; //存放数据表元素 int length; //存放数据表长度}Sqlist;void InitSqlist(Sqlist *&s) //顺序表初始化{ s=(Sqlist *)malloc(sizeof(Sqlist)); s->length=0;}void CreatSqlist(Sqlist *&s,int a[]) //创建顺序表{ int i; for(i=0;i<MAXSIZE;i++) s->data[i]=a[i]; s->length=MAXSIZE;}void PrintSqlist(Sqlist *s) //输出顺序表{ int i; for(i=0;i<MAXSIZE;i++) printf("%d ",s->data[i]); printf("\n");}int IdxSearch(Sqlist *s,IdxType IDX[],int m,int k)//分块查找{ int low=0,high=m-1,mid,i; int b=MAXSIZE/m; //b为每块的记录个数 while(low<=high) //在索引表进行二分查找,找到的位置放在low中 { mid=(low+high)/2; if(IDX[mid].key>=k) high=mid-1; else low=mid+1; } if(low<m) //在索引表中查找成功后,再在线性表中进行顺序查找 { i=IDX[low].link; while(i<=IDX[low].link+b-1&&s->data[i]!=k) i++; if(i<=IDX[low].link+b-1) return i; else return -1; } return -1;}int main(){ int temp; Sqlist *p; InitIDX(); InitSqlist(p); CreatSqlist(p,a); printf("顺序表元素如下:\n"); PrintSqlist(p); printf("分块查找元素18:\n"); temp=IdxSearch(p,IDX,5,18); printf("该数据在顺序表中下标为%d: ",temp); printf("\n");}
阅读全文
0 0
- 分块查找(索引顺序表查找)
- 索引顺序表(分块查找)
- 索引顺序表查找算法(分块查找算法)
- 索引顺序表查找算法(分块查找)
- 分块查找\索引顺序查找
- 创建索引顺序表和分块查找
- 分块索引(查找)
- 【查找算法】——顺序查找、折半查找、分块查找(索引查找)
- 索引查找(分块查找)
- 算法-查找-线性表的查找(顺序查找,二分查找,分块查找)
- 索引查找(索引查找、分块查找) C语言实现
- 线性表的查找操作(线性表的顺序查找、二分查找、分块查找)
- 线性表的查找(顺序查找,二分查找,分块查找)
- 静态查找表:顺序查找、折半查找、分块查找
- 静态查找表:顺序查找、折半查找、分块查找
- 索引顺序表查找
- 三种静态查找算法:顺序、二分/折半、索引/分块查找
- 顺序表查找、有序表查找、索引顺序表查找
- mysql负载均衡-读写分离-ProxySQL
- 疯狂Spring Cloud连载(23)Spring Cloud集群使用Zuul
- NYOJ 995 硬币找零(完全背包)
- Educational Codeforces Round 33 (Rated for Div. 2)
- Python多进程编程
- 索引顺序表(分块查找)
- Java web-BeanUtils的使用
- C++高级编程(五)模板
- APP_DATA
- 初来乍到 请多关照
- Java SE 2.面向对象
- 杂记
- 求两个数的最大公约数
- GPNU2017新生赛题解