一个个找

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 数)

登录 后可看答案