zoukankan      html  css  js  c++  java
  • 分块查找

    /*本程序实现分块查找算法  又称索引顺序查找     需要注意的是分块查找需要2次查找  先对块查找  再对块内查找    2013.12.16    18:44*/
    #include <stdio.h>
    #define N 12
    struct index
    {
        int key;
        int start;
        int end;
    }index[4];
    int search(int a[],int l,int o)//实现分块查找
    {
        int i,j=0;
        for(i=0;i<4;i++)//实现分块
        {
            index[i].start=j++;
            j+=3;
            index[i].end=j;
            index[i].key=a[j];//关键数据,标记
        }
        i=0;
        while(i<4&&o>index[i].key)//确定所在块
        i++;
        if(i>=4)
        return -1;
        j=index[i].start;
        while(j<=index[i].end&&a[j]!=o)//在块内确定位置,以while语句替代if  简洁
        j++;
        if(j>index[i].end)
        j=-1;
        return j;
       
       
    }
    int main(int argc,char **argv)
    {
        int n[N] ={2,4,8,10,12,14,15,17,21,22,44,55};//要求数据元素必须有序
        int i=0;
        int result;
        int input;
        printf(" 所有数据如下,请输入要查找的数据,本程序将列出它的位置  采用分块查找算法 ");
        while(i<N)
        {
            printf("%d    ",n[i]);
            i++;
        }
        puts(" ");
        scanf("%d",&input);
        result=search(n,N,input);
        if (result==-1)
        printf("输入有误,请检查!");
        else
        printf("您查找的数据  %d在  %d处 ",input,result);
        return 0;
    }

  • 相关阅读:
    【转】TCP协议的无消息边界问题
    【转】Log4net用法
    【转】微信公众账号 Senparc.Weixin.MP SDK 开发教程 索引
    关于Asp.Net MVC 中 UpdateModel 的未能更新***模型的 解决方案!
    批准加强军队信息安全工作意见
    iOS--开发从入门到精通
    iOS-开发者账号与证书
    iOS--高级技术
    iOS-----App闪退,程序崩溃---解决方案
    iOS-运行时机制
  • 原文地址:https://www.cnblogs.com/lzh-Linux/p/3480403.html
Copyright © 2011-2022 走看看