顺序查找/线性查找
原理:望文生义即可了解。
注:第一个数存储于数组的第零个。
33,10,13,29,16,19,32,7,43,41,37
查找43的查找顺序为33,10,13,29,16,19,32,7,43。查找9次,成功。
查找66的查找顺序为33,10,13,29,16,19,32,7,43,41,37。查找11次,失败。
二分查找/折半查找
原理:查找数位于(左侧边界位置+右侧边界位置)/2。
注:奇数除以二采用下取整(严老师版本)。仅适用于有序的顺序表。
7,10,13,16,19,29,32,33,37,41,43
查找33:
1.mid=(low+high)/2=(0+10)/2=5–>29 33在29的右边,令low右移到mid右边一个单位,即为第6个。
2.low=mid+1=6 mid=(6+10)/2 =8—>37 33在37的左边,令high右移到mid左边一个单位,即为第7个。
3.high=mid-1=7 mid=(6+9)/2=6—>32
4.low=mid+1=7 mid=(7+7)/2=7—>33 查找4次,查找成功。
查找12:
1.mid=(low + high)/2= 5–>29 12<29
2.high=mid-1=4 mid=(low + high)/2=2—>13
3.high=mid-1=1 mid=(low + high)/2=0—>7
4.low=mid+1=1 mid=(low + high)/2=1—>10
“5”low=mid+1=2 low>high (不记次数),查找4次, 查找失败
分块查找/索引顺序查找
原理:块内无序、块间有序;
①在索引表中确定待查记录所属的分块(顺序/折半)
②在块内顺序查找
7,10,13,19,16,20,27,22,30,40 ,36,43,50,48
看似无序,但是是分块区有序的,如下:
查找22:
1.块间:块10区,块20区,块30区;
2.块内:27,22 。查找5次,成功。
查找24:
1.块间:块10区,块20区,块30区;
2.块内:27,22 ,30。查找6次,失败。