C++ 实现带监视哨的顺序查找
2020-03-26 16:01:35来源:博客园 阅读 ()
C++ 实现带监视哨的顺序查找
之前在牛客网上做习题发现的这个独特的顺序查询,第一次听到“监视哨”这个说法,就查了一下
具体实现就是将数组的第0位置空,在查找时将要查找的key插入作为监视哨
这样的好处是不用每次循环都检查查找是否结束,减少了元素比较次数,
最后的返回值要么是元素下标要么是数组第0位(这种情况就是到了监视哨)
以下是我的代码
1 #include <iostream> 2 using namespace std; 3 4 template<class T> 5 int linear_search(T& arr,int key) 6 { 7 int length = sizeof(arr) / sizeof(arr[0]); 8 int i = length; 9 arr[0] = key; 10 while (arr[i] != key) 11 { 12 i--; 13 } 14 return i; 15 } 16 17 int main() 18 { 19 int array[] = { 0, 7,9,10,11,15 }; 20 int len = sizeof(array) / sizeof(array[0]); 21 cout << linear_search(array, 10); 22 return 0; 23 }
这里顺带提一下,vs2019会出现一个
error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;”
的错误,具体原理我不是很懂,单给出一个解决办法:
项目->属性->C/C++->语言->符合模式->否
最后给自己提一下醒,数组作为函数参数是传入数组首位的指针,指针是不带有数组其他属性的,
所以要在函数内获得数组的长度,只能用引用和模板的形式传入数组本身,这样就能用sizeof()获取数组长度了
原文链接:https://www.cnblogs.com/misaki-workshop/p/12574360.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash