一个个找
约 8 分钟
线性查找(顺序查找)就是从下标 0 开始,把每个元素和目标 比一遍,相等就说明找到了。它最大的优点是不挑数据:无论数组有没有排序都能用。
int find(int a[], int n, int x) {
for (int i = 0; i < n; i++)
if (a[i] == x) return i; // 返回下标
return -1; // 没找到
}
复杂度是 :最坏情况(目标在末尾或不存在)要比较 次,平均约 次。考试里常见的坑是找到后忘了 return(或 break),白白多扫后面一截,结果虽对但会拖慢甚至超时。当数据量到 、 且要反复查询时,线性查找就不够快了,这时要考虑先排序再二分。
小纸条
数组 [4,7,2,9] 里找 2,从头一个个看,看到第几个才找到?(从 1 数)
登录 后可看答案