数据结构--顺序表的查找

数据结构–顺序表的查找

顺序表的按位查找

目标:
GetElem(L,i):按位查找操作。获取表L中第i个位置的元素的值。

代码实现

#define MaxSize 10
typedef struct
{
    ElemType data[MaxSize];
    int len;
}Sqlist;


ElemType GetElem(Sqlist L, int i)
{
	return L.data[i-1];
}
#define InitSize 10
typedef struct
{
    ElemType *data;
    int MaxSize;
    int len
}Sqlist;

ElemType GetElem(Sqlist L, int i)
{
	return L.data[i-1];
}

时间复杂度

O(1)
由于顺序表的各个数据元素在内存中连续存放,因此可以根据起始地址和数据元素大小立即找到第i个元素——“随机存取”特性

顺序表的按值查找

目标:
LocateElem(Le):按值查找操作。在表L中查找具有给定关键字值的元素。

代码实现

#define InitSize 10

typedef struct 
{
    Elemtype *date;
    int MaxSize;
    int len;
} SeqList;

int LocateElem(SeqList L, Elemtype e)
{
    for (int i = 0; i <L.len; i++)
        if (L.date[i] == e)
            return i + 1;
        return 0;
}

时间复杂度

最好情况:目标元素在表头
循环1次; 最好时间复杂度 \color{red}最好时间复杂度 最好时间复杂度=O(1)
最坏情况:目标元素在表尾
循环n次; 最坏时间复杂度 \color{red}最坏时间复杂度 最坏时间复杂度=O(n);
平均情况:假设目标元素出现在任何一个位置的概率相同,都是 1 n \frac{1}{n} n1
目标元素在第1位,循环1次;在第2位,循环2次;…;在第n位,循环n次
平均循环次数 = 1 × 1 n + 2 × 1 n + 3 × 1 n + . . . . . . + n × 1 n = n ( n + 1 ) 2 × 1 n = n + 1 2 1\times\frac{1}{n}+ 2\times \frac{1}{n} +3 \times \frac{1}{n} + ...... + n \times \frac{1}{n} = \frac{n(n+1)}{2} \times \frac{1}{n}=\frac{n+1}{2} 1×n1+2×n1+3×n1+......+n×n1=2n(n+1)×n1=2n+1
平均时间复杂度 \color{red}平均时间复杂度 平均时间复杂度= O(n)

知识点回顾与重要考点

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joanh_Lan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值