专栏首页海天一树小朋友学数据结构(5):顺序查找法

小朋友学数据结构(5):顺序查找法

查找是最常见的数据操作之一,也是数据结构的核心运算之一,其重要性不言而喻。 顺序查找是最简单的查找策略,对于小规模的数据,顺序查找是个不错的选择。

(一)基本思想

从数据的第一个元素开始,依次比较,直到找到目标数据或查找失败。 1 从表中的第一个元素开始,依次与关键字比较。 2 若某个元素匹配关键字,则查找成功。 3 若查找到最后一个元素还未匹配关键字,则查找失败。

(二)时间复杂度

顺序查找平均关键字匹配次数为表长的一半,其时间复杂度为O(n)。

(三)顺序查找的优缺点

优点:对于待查的结构没有任何要求,而且算法非常简单,当待查表中的记录个数较少时,采用顺序查找较好,顺序查找既适用于顺序存储结构,又使用于链接存储结构。 缺点:时间复杂度较大,数据规模较大时效率较低。

(四)C语言实现

#include <stdio.h>
int seq_search(int array[], int n, int key)
{
    int i;
    for(i = 0; i < n; i++)
    {
        if(key == array[i])
        {
            return i;   //查找成功
        }   
    }
    return -1;          //查找失败
}
int main()
{
    int array[] = {3, 5, 2, 7, 6};
    int num = 7;
    int len = sizeof(array) / sizeof(int);
    int index = seq_search(array, len, num);
    if(-1 != index)
    {
        printf("%d的位置为%d\n", num, index);
    }
    else
    {
        printf("没有找到此元素");
    }
    return 0;
}

运行结果:

7的位置为3

本文分享自微信公众号 - 海天一树(gh_de7b45c40e8b),作者:.

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • AtCoder Beginner Contest 101 完整解题报告

    分析:因为最小的数为1,最终所有的数必然全变为1。计算1左边和右边的数各分为多少段,加起来即可得到结果。 假设1位于第i个位置,则左边的分段为(i - 1) /...

    海天一树
  • AtCoder Beginner Contest 100 完整解题报告

    https://beta.atcoder.jp/contests/abc100/tasks

    海天一树
  • 2017年海淀区信息学竞赛小学组详细答案

    海天一树
  • 最大连续子序列和(最大子数组和)四种最详细的解法

    解法1:穷举暴力法 枚举左端点跟右端点,然后遍历更新所有的子序列和,最终得到结果就是最大的

    用户7727433
  • 不引入新的数组,实现数组元素交换位置函数

             最近遇到一道C++的面试题,要求不引入新的数组,实现数组元素交换位置函数,看似挺简单的,却还是花费了我不少时间,这里记录下来,给大家一个简单的...

    用户1221057
  • 每天一道剑指offer-构建乘积数组

    给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]A[1]...A[i-1]A[i+1].....

    乔戈里
  • P1113 杂务 拓扑

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    用户2965768
  • 【每日算法Day 70】图解算法:小学生都会的数块数问题,你会吗?

    在由 1 x 1 方格组成的 N x N 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。

    godweiyang
  • c++ int,unsigned int混合表达式类型转换

    int和unsigned int的混合表达式,计算时会将int转换为unsigned int。普通情况下会将范围小的隐式转换为范围大的,但对于int和unsig...

    于小勇
  • HDUOJ-----1556Color the ball

    Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/327...

    Gxjun

扫码关注云+社区

领取腾讯云代金券