1.顺序查找
1.1思想
逐个查找
1.2代码
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
int nums[] = {1,2,23,34,5,6,67,6,9};
cout << "请输入要查找的数" << endl;
int num = 0;
cin >> num;
//定义一个变量记录寻找的值是否存在
//-1表示不存在
int isSave = -1;
for(int i = 0; i < sizeof(nums)/sizeof(int); i++)
{
if (nums[i] == num)
{
isSave = i;
break;
}
}
if(isSave != -1)
cout << "找到了,下标为" << isSave << endl;
else
cout << "不存在" << endl;
return 0;
}
2.二分查找
2.1思想
又名
:
折半法
优点
:
提高了查询效率
注意
:
查找的数据所在的容器必须是有序排列的
2.2代码
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
int nums[] = {1,11,22,23,26,33,45,78,99};
int tag = -99;
//记录开始位置的变量
int start = 0;
int end = sizeof(nums) /sizeof(nums[0]) - 1;
bool isSave = false;
//开始位置小于等于结束位置,说明没有查找结束
while(start <= end)
{
//计算中间位置
int center = (start + end) / 2;
if (nums[center] == tag)
{
cout << "存在" << endl;
isSave = true;
break;
}
else if(nums[center] < tag)
{
//说明查找的数据在后半段,所以移动开始位置到中间位置+1
start = center + 1;
}
else
{
//说明查找的数据在前半段,所以移动结束位置到中间位置-1
end = center - 1;
}
}
if (!isSave)
{
//不存在
cout << "不存才查找的数" << endl;
}
return 0;
}