更多课程 选择中心

C/C++培训
达内IT学院

400-996-5531

C++ 实现带监视哨的顺序查找算法

  • 发布:C++培训
  • 来源:资料库
  • 时间:2020-06-03 16:49

这篇文章主要介绍了C++ 实现带监视哨的顺序查找算法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。

监视哨往往是程序里面的一个变量,如果是对数字排序的话,那么该变量一般是数值型变量。变量的赋值就相当于哨兵,当排序数列中出现与哨兵相等的值或有某种既定关系出现时,就做一种操作,比如说停止排序,或进行下一趟排序。

举例:

顺序检索的算法描述如下

int Search_Sequen(SSTable ST,KeyType key){

//在线性表ST中顺序检索其关键字等于Key的数据元素,

//若找到,函数值为该元素在表中的位置,否则为-1.

ST.element[ST.length].key=key; //设置监视哨

i=0;

while(ST.element[i].key!=key) i++;

if(i<ST.length)

return i;

else

return -1;

}

正文

之前在牛客网上做习题发现的这个独特的顺序查询,第一次听到“监视哨”这个说法,就查了一下具体实现就是将数组的第0位置空,在查找时将要查找的key插入作为监视哨,这样的好处是不用每次循环都检查查找是否结束,减少了元素比较次数,最后的返回值要么是元素下标要么是数组第0位(这种情况就是到了监视哨)

以下是我的代码

#include <iostream>

using namespace std;

template<class T>

int linear_search(T& arr,int key)

{

int length = sizeof(arr) / sizeof(arr[0]);

int i = length;

arr[0] = key;

while (arr[i] != key)

{

i--;

}

return i;

}

int main()

{

int array[] = { 0, 7,9,10,11,15 };

int len = sizeof(array) / sizeof(array[0]);

cout << linear_search(array, 10);

return 0;

}

这里顺带提一下,vs2019会出现一个

error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;”的错误,具体原理我不是很懂,单给出一个解决办法:项目->属性->C/C++->语言->符合模式->否最后给自己提一下醒,数组作为函数参数是传入数组首位的指针,指针是不带有数组其他属性的,所以要在函数内获得数组的长度,只能用引用和模板的形式传入数组本身,这样就能用sizeof()获取数组长度了

总结

到此这篇关于C++ 实现带监视哨的顺序查找的文章就介绍到这了,更多相关c++ 监视哨顺序查找内容还请关注本站!

当你还在担心能否就业时,达内学员提前被企业录取;当你转辗于各大招聘会时,达内学员收到了高薪offer;当你在各大招聘网站投递简历时,达内学员中有人一毕业进入五百强名企。所以选择很重要。找C++培训班,选达内就对了。

版权声明:转载文章来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:哈夫曼树如何使用C语言构建
下一篇:C++必须掌握的pimpl惯用法

超全的C语言标识符知识

C指针——指针类型转换

C指针——指针和结构类型的关系

C指针——数组和指针的关系

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省