顺序表的查找
从前往后找
- 从第一个开始进行判断,对表中的元素和要查找的元素一一对应
- 但是在判断元素是否相等的同时,也要对其增加一个 if 语句的判断,用于判断是否已经检索到了表尾
- 但在顺序表的查找中一般是一定查找地到的,而且 if 判断语句又浪费了近一半的时间,故改进了算法的查找方式
从后往前找
- 首先要知道这种方式检索的顺序表的表头是空的。
- 从表尾的最后一个判断,在表头设置一个和即将要检索的元素一样的元素,因此每次只需要判断元素是否相等即可,不要需要判断检索的位置是否超出表长。
- 由上可知,最后一定会匹配成功。且在匹配的过程中省去了判断是否超出表长的语句。
- 和从前往后找的不同的地方在于,我们只需要检索最后匹配成功的位置是否是表头,若是表头,那么就表明表中不存在该元素;若不是表头,那就表明表中存在该元素。
有序表的查找
折半查找
- 如标题,折半查找的前提条件是表是有序的
- 折半查找的思想:在表头和表尾各设置一个指针(这里的指针是指位置的下标),分别为low和high。
- 同时再设立一个指针 mid ,mid 等于 mid=(high-low)/ 2+low (这里不直接是 mid =(low+high)/ 2 是防止low+high后数据溢出,产生负数。
- 这时候,1)若 mid 指向的数据