【数据结构】静态分配的顺序表的按值查找和按位查找

c 复制代码
#include <stdio.h>
#include <stdlib.h>

#define maxSize 10

typedef struct {
	int data[maxSize];
	int length;
}SqList;

void initList(SqList &L) {
	for(int i=0;i<L.length;i++)
		L.data[i]=0;
	L.length=0;
}

int main() {
	SqList L;
	initList(L);
	getElem(L,2);
}
c 复制代码
// 按位查找:查第i个元素的值,下标就是i-1 
// 由于顺序表具体随机存取的特点,因此可以直接读取 
int getElem(SqList L,int i) {	
	if(i<0 || i>L.length+1) {
		printf("输出的位序不合法\n");
	} else {
		printf("%d\t第i个的值\n",L.data[i-1]);
		return L.data[i-1];
	}
}

// 分析按位查找的时间复杂度,他都没有循环,一次找到,O(n)=O(1) 
c 复制代码
// 按值查找:给一个值,查位序
int locateElem(SqList L,int e) {
	for(int i=0;i<L.length;i++) {
		if(L.data[i] == e) {
			return i+1;		// 位序 
		}
	}
	return 0;	// 退出循环,说明没找到 
} 

// 分析按值查找的时间复杂度
// 1、若要查的值在表头,循环1次,O(n)=1
// 2、若要查的值在表尾,循环n次,O(n)=n 
// 3、若要查的值在除表头和表尾的任意一个地方,它们被找到的概率都是1/n
	// 平均循环次数=循环总次数*概率=(1+2+3+...+n)*(1/n)=(n(n+1)/2)*(1/n)=(n+1)/2
	// 时间复杂度O(n)=n 
相关推荐
linux-hzh17 分钟前
百日算法修炼 · Day 17
数据结构·算法
OPEN-F2 小时前
C++入门教程:数组、字符串与指针入门
数据结构·c++·算法
pluviophile_s2 小时前
数据结构:第7讲:图
数据结构·笔记
林森lsjs2 小时前
零基础吃透二叉树:定义、遍历与高频算法 —数据结构柒
java·开发语言·数据结构·算法·二叉树
船厂电气自动化ai大模型2 小时前
AI大模型与数学·第56课 快速傅里叶变换FFT:DFT高效优化算法,图像、音频、扩散模型工程加速核心工具
数据结构·人工智能·深度学习·算法·机器学习
橘子汽水1683 小时前
Leetcode 236,437:二叉树的最近公共祖先,路径总和III
java·数据结构
wabs6664 小时前
关于二叉树【力扣144.二叉树的前序遍历的思考】
数据结构·c++·算法·leetcode·二叉树
LuminousCPP5 小时前
数据结构-二叉树(三):堆复杂度证明与 Top-K 问题|错位相减推导 + 海量数据内存优化
c语言·数据结构·笔记·排序算法
1000世界小札11 小时前
《大话数据结构》第9章精读:归并排序与快速排序完整 C++ 实现
数据结构·c++·算法
一直C1 天前
【数据结构】哈希表+算法复杂度与经典排序查找(C语言)
java·linux·开发语言·数据结构·算法·ubuntu·散列表