首页 > 编程 > C++ > 正文

查找算法之二分查找的C++实现

2020-05-23 13:24:57
字体:
来源:转载
供稿:网友

二分查找

二分查找算法,说白了就是在有序的数组里面给予一个存在数组里面的值key,然后将其先和数组中间的比较,如果key大于中间值,进行下一次mid后面的比较,直到找到相等的,就可以得到它的位置。

前提:线性表中的记录必须是关键字有序(通常从小到大),线性表必须采用顺序存储。 
基本思想:取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;否则,在右半区查找。不断重复,直到查找成功或查找失败为止。

#include<iostream>#include<stdio.h> #define N 10using namespace std;int main(){int a[N],front,end,mid,i,x;cout<<"请输入已经排好的序列10个:"<<endl;for(i=0;i<N;i++){cin>>a[i];}cout<<"请输入要查询的数字x"<<endl;cin>>x;front=0;end=N-1;mid=(front+end)/2;while(front<end&&a[mid]!=x){if(a[mid]>x) end=mid-1;if(a[mid]<x) front=mid+1;mid=(front+end)/2; } if(a[mid]!=x) { printf("找不到该数字!");}else{printf("找到了,该数字在第%d位置",mid+1); } return 0;}

后记:

查找和排序都是在程序设计中经常用到的算法,查找相对而言较为简单,不外乎顺序查找、二分查找、哈希表查找和二叉排序树查找。 
在面试的时候,不管是用循环还是用递归,面试官都期待应聘者能够信手拈来写出完整的二分查找代码,否则可能连继续面试的兴趣都没有。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对VEVB武林网的支持。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表