实验报告
课程名称 《算法分析与设计》 实验日期 2021 年 3 月 22 日 至 2021 年 3 月 29日
学生姓名 石晨昊 所在班级 计算机194 学号 2019212212322
实验名称 检索算法
实验地点 同组人员
1.问题
检索算法
2.解析
顺序查找:从头到尾遍历一遍,找到就输出;
二分查找:表中的元素拆分成一半缩小范围来查找,所以我们需要引入2个变量low和high以及mid,其中low标志每一次折半首元素,high标志位每一次折半的尾元素,mid表示为中间元素。
3.设计
int SequentialSearch(int *a,const int n, const int x)
{
int i;
for(i = 0;i<n;i++) //循环n次查找num
{
if(a[i]==x)
return i;
}
if(i==n) return -1;
}
int find(vector<int>& nums, int target) {
int left = 0, right = nums.size();
while (left < right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) return mid;
else if (nums[mid] < target) left = mid + 1;
else right = mid;
}
return -1;
}
4.分析
顺序查找时间复杂度O(N)
二分查找时间复杂度O(logn)
5.源码
https://github.com/695950719/Algorithm-design/blob/main/search.cpp