第十四周项目1(2)——验证分块查找算法
来源:互联网 发布:php 36进制 编辑:程序博客网 时间:2024/05/01 20:14
- /*
- * Copyright (c)2016,烟台大学计算机与控制工程学院
- * All rights reserved.
- * 文件名称:wu.cpp
- * 作 者:武昊
- * 完成日期:2016年12月8日
- * 版 本 号:v1.0
- *问题描述:认真阅读并验证分块查找算法。
- *输入描述:无
- *程序输出:测试数据
- */
- #include <stdio.h>
- #define MAXL 100 //数据表的最大长度
- #define MAXI 20 //索引表的最大长度
- typedef int KeyType;
- typedef char InfoType[10];
- typedef struct
- {
- KeyType key; //KeyType为关键字的数据类型
- InfoType data; //其他数据
- } NodeType;
- typedef NodeType SeqList[MAXL]; //顺序表类型
- typedef struct
- {
- KeyType key; //KeyType为关键字的类型
- int link; //指向对应块的起始下标
- } IdxType;
- typedef IdxType IDX[MAXI]; //索引表类型
- int IdxSearch(IDX I,int m,SeqList R,int n,KeyType k)
- {
- int low=0,high=m-1,mid,i;
- int b=n/m; //b为每块的记录个数
- while (low<=high) //在索引表中进行二分查找,找到的位置存放在low中
- {
- mid=(low+high)/2;
- if (I[mid].key>=k)
- high=mid-1;
- else
- low=mid+1;
- }
- //应在索引表的high+1块中,再在线性表中进行顺序查找
- i=I[high+1].link;
- while (i<=I[high+1].link+b-1 && R[i].key!=k) i++;
- if (i<=I[high+1].link+b-1)
- return i+1;
- else
- return 0;
- }
- int main()
- {
- int i,n=25,m=5,j;
- SeqList R;
- IDX I= {{14,0},{34,5},{66,10},{85,15},{100,20}};
- KeyType a[]= {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};
- KeyType x=85;
- for (i=0; i<n; i++)
- R[i].key=a[i];
- j=IdxSearch(I,m,R,n,x);
- if (j!=0)
- printf("%d是第%d个数据\n",x,j);
- else
- printf("未找到%d\n",x);
- return 0;
- }
0 0
- 第十四周项目1—验证算法(分块查找)
- 第十四周项目1-(2)验证分块查找算法
- 第十四周项目1(2)验证分块查找算法
- 第十四周项目1-(2)验证分块查找算法
- 第十四周项目1--验证算法--(2)分块查找
- 第十四周 项目1--验证算法--(2)分块查找
- 第十四周项目1-(2)验证分块查找算法
- 第十四周项目1(2)-验证分块查找算法
- 第十四周项目1-(2)验证分块查找算法
- 第十四周项目1(2) 验证分块查找算法
- 第十四周项目1(2)--验证分块查找算法
- 第十四周 项目1-(2)验证分块查找算法
- 第十四周 项目1(2):验证分块查找算法
- 第十四周项目1(2)--验证分块查找算法
- 第十四周项目1(2)--验证分块查找算法
- 第十四周实践项目1—算法验证(2)分块查找算法
- 第十四周上机实践—项目1(2)—验证分块查找算法
- 第十四周项目1(2)——验证分块查找算法
- QString基础知识
- 深度学习视觉领域常用数据集汇总
- Idea16使用Maven编译scala和打包jar
- MyBatis+Redis缓存实现
- MiniGui开发:ubuntu-14.04环境移植MiniGui
- 第十四周项目1(2)——验证分块查找算法
- Ubuntu中设置固定ip和静态DNS
- Android adb 环境变量配置的坑 adb 不是内部或外部命令
- iOS蓝牙4.0(BLE)-后台接收数据
- jQuery之Deferred对象详解
- 【第14周项目1-(1)验证折半查找算法】
- Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式
- 第十五周项目3 B-树的基本操作
- 第十三周项目5 拓扑排序算法的验证