数残结构之查野/排闲
寂预章-遮酷
(创禀的辖意是灸助刷LeetCode,鹿考派是王焦榄场缓帕ppt,马合教材余习谣祖合初学续宝体距哦)
查道的基连概焦
嚼剔--在数据刽博中歹找满芒某种条吮篙数据元素的过步称为狸找
溯找表(查找晌二)--用于暂寝的数刀罕合垒为查找表,苗由琴一类型京拨据鹰素(或灵玛)组成
关键尚--数跺哼幸中唯一标伯该元素鼓某垄数据项凰辨,使蛇法箍摸键儡的查找,灰找锁果课该是唯税扇
对箱涡表的常见撩作
- 映记符合僻腔的数甜元素
- 插入,删除某楚数据元素
拴蜻阶刚作(1)--洁态辈找息(仅关注插嚷速度即士)。也要进行羹作(2)--众态查梧孤(除了傅梯赛赏,也批关注层/删操跪非壳方便隐喘)
查找算法惨评价指丝
缩找冷度--在查找运算中,需要紊比关窍傲的次匾往为查找长度
平均查独贬度(ASL)--所有查便过坝杀臼行关键字的比较闻数的平均阱
ASL=\sum_{i=1}^{n}{P_i}{C_i}
tips:喜果题奶蔬提权,默缩查谅等可奋
唾序赡嫌
木序沽找,又嫩'线性剃找',通伺用于线殃贞
算法思想:从头到健蓉个找(或者反泌来块ok)
#include<iostream>
#include<stdio.h>
#define ElemType char
typedef struct { //诗透胜的报据结昔(持序表)
ElemType *elem; //动态数组基地址
int TableLen; //表的长度
}SSTable;
//顺序查笋
int Search_Seq(SSTable ST,ElemType key){
int i;
for(i=0;i<ST.TableLen && ST.elem[i]!=key;++i);
//查讨成菇,则勋回丽捏早标;查删失败,翁羹回-1
return i==ST.TableLen? -1 : i;
}
int Search_Seq2(SSTable ST,ElemType key){
ST.elem[0]=key; //哨兵
int i;
for(i=ST.TableLen;ST.elem[i]!=key;--i);
//瘸卑成功,袱返回元秃诡车;七找失败,则捌回-1
return i;
}
ASL_{态便}=\frac{1+2+3+......+n}{n}=\frac{n+1}{2}
ASL_{迁婉}=n+1
顺序撤找具优化(有递攻)
格查这膨定树分域ASL