`

算法学习 之查询

    博客分类:
  • c++
 
阅读更多

 

/******************顺序查找******************/
//假设静态查找表的顺序存储结构为
typedef struct
{
ElemType *elem;   // 数据元素存储空间基址,建表时
// 按实际长度分配,0号单元留空
int length;         // 表的长度
} SSTable;

int Search_Seq(SSTable ST, KeyType key) 
{  /*在顺序表ST中顺序查找其关键字等于key的数据元素。若找到,则函数值为该元素在表中的位置,否则为0。*/
ST.elem[0] = key;      // “哨兵”
for (i=ST.length; ST.elem[i] != key; --i); // 从后往前找
return i; // 找不到时,i为0
} // Search_Seq

/****************比较无监视哨的查找算法***********/
int location (SSTable ST , ElemType& e) 
{
k = 1;
while ( k <= ST.length && ST.elem[k] !=e) 
k++;
if ( k<=ST.length) return k; 
else return 0;
} //location
//在表长>1000时,将使算法的执行时间几乎增加一倍。
//为此,改写顺序表的查找算法, 算法中附设监视哨,以避免循环时每一步都要判别是否数组出界。

/******************有序表折半查找******************/
int Search_Bin ( SSTable ST, KeyType key ) 
{  // 在有序表ST中折半查找其关键字等于key的数据元素。
// 若找到,则函数值为该元素在表中的位置,否则为0。
low = 1;    high = ST.length;  //置区间初值
while ( low <= high ) 
{
mid = (low + high) / 2;
if (ST.elem[mid] == key)   return mid;  //找到
else if ( ST.elem[mid] < key )
high = mid - 1; // 继续在前半区间进行查找
else  low = mid + 1; // 继续在后半区间进行查找
}
return 0; // 顺序表中不存在待查元素
} // Search_Bin
分享到:
评论
1 楼 sblig 2012-05-22  
#include <stdio.h>
#include <stdlib.h>
#define  OK 1
#define  ERROR  0
#define LIST_INIT_SIZE  80
typedef struct {
  ElemType  *elem;
  int       length;
  int       listsize;
} SqList;

int ListLength_Sq(SqList L)
{
    return(L.length);
}
Status InitList_Sq(SqList &L)
{
    L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)) ;
    L.length=0;
    L.listsize=LIST_INIT_SIZE;
    return OK;
}
Status GetElem_Sq(SqList L, int i, int &e)
{
  e=L.elem[i-1];
  return OK;
}
int LocateElem_Sq(SqList L, int e)
{
    int i=0;
    while(i<L.length&&L.elem[i]!=e)
          i++;
    if(i==L.length)return 0;
    else return i;
}
Status ListInsert_Sq (SqList &L, int pos, ElemType e)
{
   ElemType *q,*p;
   if (pos<1||pos>L.length+1)  return ERROR;
   if (L.length >= L.listsize) return ERROR;

    q =&(L.elem[pos-1]);
    for (p=&(L.elem[L.length-1]); p>=q; p--)
       *(p+1) = *p;
   *q = e;
   L.length++;

  return OK;
}

相关推荐

    公交线路查询算法与实现PPT学习教案.pptx

    公交线路查询算法与实现PPT学习教案.pptx

    Dijkstra算法在智能公交查询系统中的应用

    关于交通查询的系统很多,这是一篇详细介绍Dijkstra算法在智能公交查询系统中的应用的好文档,共大家学习交流!

    学习基于SQL数据库的算法

    数据库是存储数据和执行大批量计算的场所,在数据库中使用一些简单的SQL命令,进行存储、查询、统计、以解决现实世界中的问题已经是屡见不鲜。随着数据量的大幅度增加和业务规则的日益复杂,越来越需要一种专门的...

    地铁换乘算法

    地铁查询算法的初步实现,仅供学习研究。 版权所有dzut@qq.com,如需转载,请保留版权。 查询注意事项: 1、应该简短输入,如:“罗湖”,不要输入“罗湖站”或“罗湖地铁站”。如要扩展,可自己二次开发。 2、...

    公交出行查询算法的数据库实现

    利用数据库进行查询公交换乘,算法非常详细,利于学习用

    海量数据库的查询优化及分页算法方案

    海量数据库的查询优化及分页算法方案,有一定的参考价值,对学习有很大的帮助

    2--[scratch算法练习-价格查询].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码

    2--[scratch算法练习-价格查询].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码2--[scratch算法练习-价格查询].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码2--[scratch算法练习-价格查询].zip...

    算法导论中文版

    全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。 ----------------------------------------------...

    一种基于学习的高维数据 c-近似最近邻查询算法1

    摘要:针对高维数据近似最近邻查询,在过滤-验证框架下提出了一种基于学习的数据相关的 c-近似最近邻查询算法.证明了数据经过随机投影之后,满足语义哈希技术所需的熵

    查询与排序算法——C++实现

    用于帮助新手入门,学习更方便,掌握查找和排序。 使用C++实现,逐步实现查找和排序算法。 更改为需要积分。

    数据挖掘/ 知识发现 算法

    狭义的数据挖掘是指统计分析、机器学习等发现数据模式的智能方法,即偏重于模型和算法。 (4)数据库查询系统和专家系统不是数据挖掘!在小规模数据上的统计分析和机器学习过程也不应算作数据挖掘

    论文研究-利用卷积神经网络改进迭代深度学习算法的图像识别方法研究.pdf

    算法的图库和查询实例中包括了不同视角、背景、面部表情、解析度和照明度的人脸或物体图像集。采用数据集将提出的算法与其他算法进行评估对比,实验结果表明提出的算法在被测数据集上的性能最优。

    基于加权自学习散列的高维数据最近邻查询算法

    因为查询和存储具有高效性,学习型散列逐渐被应用于解决最近邻查询问题。学习型散列将高维数据转化成二进制编码,并使得原始高维空间中越相似的数据对应二进制编码的汉明距离越小。在实际应用中,每次查询都会返回...

    浙江大学acm模板,讲述常用算法

    本书采用chm格式,易于查询和学习。主要介绍了acm中常用的算法,绝对是学习算法的人想要的书。

    论文研究-一种基于结构化学习的排序算法.pdf

    对此提出一种新的排序算法,该算法把排序问题看成一个结构化学习过程,即通过训练集来学习一个排序结构。算法首先定义了一个查询级的目标函数,针对算法约束条件太多,难以直接优化,提出使用割平面算法进行求解。...

    PHP进阶学习之Geo的地图定位算法详解

    本文实例讲述了PHP进阶学习之Geo的地图定位算法。分享给大家供大家参考,具体如下: 前言 日常开发中我们经常需要查找某个物体的定位,或者查找附近的范围等,我们自然而然会想到的方法就是利用各种提供服务的地图...

    一种基于学习的高维数据c-近似最近邻查询算法

    针对高维数据近似最近邻查询,在过滤-验证框架下提出了一种基于学习的数据相关的c-近似最近邻查询算法.证明了数据经过随机投影之后,满足语义哈希技术所需的熵最大化准则.把经过随机投影的二进制数据作为数据的类标号,...

    基于遗传算法的排程系统

    在matlab中编写遗传算法利用mcr导出为.m文件供c#引用,采用winform设计系统前端,整个系统包括基于遗传算法的排程系统的对于资源物件的增删改查,针对任务的排程,插单和撤单的处理以及任务状态的反馈和查询修改

Global site tag (gtag.js) - Google Analytics