#include <iostream>
#include <cstdio>
#include <cstdlib>
#include<algorithm>
using namespace std;
void linear_search(int a[],int n,int k)
{
//线性的从一个端点开始,将所有的数据依次访问,
//并求得所需要查找到的数据的位置,
//此时,线性查找可以称呼为遍历。
for(int i=0;i<n;i++)
{
if(a[i]==k) cout<<"顺序搜索算法已经找到元素"<<k<<"它位于:"<<i<<endl;
}
}
void binary_search(int a[],int n,int k)
{
//二分查找一定要重新排序!
sort(a,a+n);
int low=0;
int high=n-1;//i<n
int mid;
///cout<<a[0]<<endl;
while(low<=high)//两个指针出现交叉
{
mid=(low+high)/2;
//cout<<mid<<a[mid]<<endl;
if(a[mid]==k)
{
cout<<"二分搜索算法已经找到元素"<<k<<"它位于:"<<mid<<endl;
return;
}
//如果mid比k大,我们要选择左边进行搜索
else if(a[mid]>k) high=mid-1;
//如果mid比k小,我们要选择右边进行搜索
else if(a[mid]<k) low=mid+1;
}
cout<<"二分搜索算法没有找到元素!"<<endl;
}
int main()
{
//
int a[10]={1,2,3,4,5,6,7,8,9,10};
//线性查找
linear_search(a,10,5);
//二分查找
binary_search(a,10,5);
return 0;
}
线性查找与二分查找算法实现
于 2024-08-08 20:39:57 首次发布