元素查询方法

来源:互联网 发布:网络爬虫原理 编辑:程序博客网 时间:2024/05/17 07:23
数据查找

二分法查找,分块查找(索引顺序查找)都是基于有序数列。

分块查找要求将待查的元素均匀的分成快,块间按大小排序,块内不排序,所以要建立一个块的最大(或最小)关键字表,称为索引表。

这里举例一个分块查找的算法

#include<stdio.h>//分块查找struct  index{int start;int end;int key;}index_table[4];int block_search(int key,int a[]){int i,j;i=1;while(i<=3&&key>index_table[i].key)i++;if(i>3)return 0;j=index_table[i].start;while(j<=index_table[i].end&&a[j]!=key)j++;if(j>index_table[i].end)j=0;//未查到,返回一个falsereturn j;}int main(){int i,j=0,key,k,a[15];printf("请输入15个数字:\n");for (i=0;i<15;i++)scanf("%d",&a[i]);for (i=1;i<=3;i++){index_table[i].start=j;index_table[i].end=j+5;j=j+5;index_table[i].key=a[j];}printf("请输入你先要查找的元素:\n");scanf("%d",&key);k=block_search(key,a);if(k!=0)printf("查找成功,他的位置是:%d",k+1);elseprintf("没有查到\n");printf("\n");return 0;}

0 0