c语言完成分块查找
- 首先要把一系列数组均匀分成若干块(最后一个可以不均匀)
每块中元素任意排列,即块中数字无序,但是整个块之间要有序。因此也存在局限性。
#include<stdio.h> //分块查找法
void black(int b[],int iLong,int key);//分块算法
int max(int a[],int start,int end);//寻求数组中的最大值,并返回。 int main()
{
int iLength,istars,i,iTimes,iNumber,n;
int a[];
printf("please enter the length of the array:\n ");
scanf("%d",&iLength);
printf("please enter the number:\n");
for(i=;i<iLength;i++)
{
scanf("%d",&a[i]);
}
printf("please enter the number that you want:\n");
scanf("%d",&istars); }
int max(int a[],int start,int end)//寻求数组中的最大值,并返回。
{
int i,iTemp;
for(i=start;i<end;i++)
{
if(a[i]>a[i+])
{
iTemp=a[i];
a[i]=a[i+];
a[i+]=iTemp;
}
}
return a[end];
} void black(int b[],int iLong,int key)
{
int a,b,c;
a=; }
自己首先写了如上的代码,但是这种写法发现在写分块查找模块时,越写越难找,越来越难找。所以,这种思路过于复杂。
又由于分块查找法需要分块处理,则需要结构体来实现分块查找,
但是,分块查找法要求每个块之间有序,这就很大的局限性,前一个块的最大值必须比后一个块的最小值小。因此暂定输入整个数组皆为有序。
#include <stdio.h> struct number//结构体,定义每个分块中的数据结构,且每个分块的数据结构能相同
{
int start;
int end;
int key;
}number_table[];//结构体中这个分号一定要有。 int block(int key,int a[])
{
int i,j;
i=;
while( key>number_table[i].key && i<)//确定为哪个分的块中
i++;
if(i>)
return ;
j=number_table[i].start; //设置j为每个块中的首数据。
while(key!=j && j<number_table[i].end)//在块中的什么位置。此时不能具体化为4.因为分块法最后一组不一定为4个
{
j++;
}
if(j>number_table[i].end)
j=;
return j;
}
int main()
{
int i,j,k;
int iStars; int a[];
j=;
printf("please enter fifth numbers.\n");
for(i=;i<=;i++)
{
scanf("%d",&a[i]);
}
//这个循环刚开始没写。
for(i=;i<=;i++)//i的上限表示分组情况,但有个疑问为什么上限为2的时候依旧正确呢
{
number_table[i].start=j+;//第一次循环 开始的下标为1 2循环,开始的下标为6
j++;
number_table[i].end=j+;//第一次循环 结尾的下标为5
j=j+;
number_table[i].key=a[j];//限定了最大值为最后一位 为a[5].
}
printf("please enter the number that you want:\n");
scanf("%d",&iStars); j=block(iStars,a);
if(j==)
printf("Failed\n");
else
printf("success. the number on %d\n",j);
}
但是有个疑问,为什么在for循环中i的上限可以不限定。后来经过研究发现,如果i是2的话,则运用分块查找法数列前排的可以找到,则数据后面的就发现不了,因此,i的分组情况决定了在查找时的范围。
c语言完成分块查找的更多相关文章
- C语言两种查找方式(分块查找,二分法)
二分法(必须要保证数据是有序排列的): 分块查找(数据有如下特点:块间有序,块内无序):
- 索引查找(索引查找、分块查找) C语言实现
1.基本概念 索引查找又称分级查找. 索引存储的基本思想是:首先把一个集合或线性表(他们对应为主表)按照一定的函数关系或条件划分成若干个逻辑上的子表,为每个子表分别建立一个索引项,由所有 这些索引项构 ...
- C语言之三大查找算法
查找算法 1.二分查找 二分查找就是折半查找,其基本思想是:首先选取表中间位置的记录,将其关键字与给定关键字key进行比较,若相等,则查找成功.若key值比该关键字值大,则要找的元素一定在右子表中,则 ...
- 查找->静态查找表->分块查找(索引顺序表)
文字描述 分块查找又称为索引顺序查找,是顺序查找的一种改进方法.在此查找算法中,除表本身外, 还需要建立一个”索引表”.索引表中包括两项内容:关键字项(其值为该字表内的最大关键字)和指针项(指示该子表 ...
- HDOJ1251(前缀匹配---分块查找&map应用)
分块查找算法 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm ...
- 分块查找(Blocking Search)
1.定义 分块查找(Blocking Search)又称索引顺序查找.它是一种性能介于顺序查找和二分查找之间的查找方法. 2.基本思想 分块查找的基本思想是: (1)首先查找索引表 索引表是有序表,可 ...
- 数据结构(C语言版)---查找
1.查找表:同一类型的数据元素构成的集合. 2.对查找表进行的操作:查询某特定元素.检索满足条件的元素的属性.插入元素.删除元素. 1)若对查找表进行的操作只涉及前两种,则为静态查找表:需要进行插入和 ...
- c语言经典算法——查找一个整数数组中第二大数
题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1 ...
- C语言实现 二分查找数组中的Key值(递归和非递归)
基本问题:使用二分查找的方式,对数组内的值进行匹配,如果成功,返回其下标,否则返回 -1.请使用递归和非递归两种方法说明. 非递归代码如下: #include <stdio.h> int ...
随机推荐
- windows在cmd执行svn 命令
1. 使用svn 命令行工具. 找到http://www.visualsvn.com/downloads/ 下载Apache Subversion command line tools,这是一个可以在 ...
- RDIFramework.NET 框架兼容各种数据库类型事务使用范例参考
RDIFramework.NET 框架兼容各种数据库类型事务使用范例参考 RDIFramwork.NET框架对数据库的事务做了很好的控制,对多表或多条语句需要在同一事务执行提供了很好的支持,同时支持任 ...
- java学习规划
今天在网上看到一位大学生的java学习线路规划,觉得蛮适合我,就详细阅读了一下,规划路线应该适用于大部分学习java语言的人,贴出来与大家共勉. 在学习的过程中,不能急于去学习更多的知识,因为知识是无 ...
- ASP.NET MVC controller 之间传JS值
在ASP.NET MVC中有东西叫TempData,它的类型是TempDataDictionary,它与ViewData以及ViewBag的不同之处在于 它的内部是使用session来保存信息的,可以 ...
- java入门之从C#快速入门java
可变参数: Void sum(int…list){}以“…”三个字为关键字 可变参数:以params为关键字 34 对异常的描述: java中,异常分为两种,运行时异常(也就是uncheckExcep ...
- 11. 星际争霸之php设计模式--备忘模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- h5移动端前端性能优化
1.脚本优化 (1)减少重绘和回流 (2)缓存Dom选择与计算 (3)缓存列表length (4)尽量使用事件代码,避免批量绑定事件 (5)尽量使用ID选择器 (6)使用touchstart.touc ...
- Notepad++的列编辑功能
转自:http://www.crifan.com/files/doc/docbook/rec_soft_npp/release/htmls/index.html http://www.crifan.c ...
- placeholder兼容ie8
<script type="text/javascript"> if( !('placeholder' in document.createElement('i ...
- asp.net core 通过 TeamCity 实现持续集成笔记
0x00 很早之前就想体验一把持续集成的快感,然后刚好手头上有个 asp.net core 的项目,就想来部署一下持续集成.一开始我是想用 Jenkins 的,弄了好半天,git 仓库没法同步下来,我 ...