1.查找
查找就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。
查找表:是由同一类型的数据元素(或记录)构成的集合。
关键字:是数据元素中某个数据项的值,又称为键值。
查找表按照查找方式来分有两种:静态查找表和动态查找表
静态查找表:只做查找操作的查找表。
(1)查询某个特定的数据元素是否在表中
(2)检索某个特定的数据元素和各种属性
动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素。
(1)查找时插入元素
(2)查找时删除元素
2.顺序表查找
顺序查找,又称线性查找。过程:从表中第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录;如果直到最后一个(或第一个)记录,其关键字和给定值比较都不相等时,则表中没有所差的记录,查找不成功。
时间复杂度O(n)
public class Test_Search {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array= {0,2,6,5,18,26,8,9,11,42};
System.out.println("普通顺序表查找:" +"\t"+sequenceSearch1(array,9));
System.out.println("设置哨兵顺序表查找" +"\t"+sequenceSearch2(array,9));
}
//普通顺序表查找
public static int sequenceSearch1(int[] array,int key) {
int i;
for(i=1;i<=array.length;i++) {
if(array[i]==key) {
return i;
}
}
return 0;
}
//设置哨兵顺序表查找
public static int sequenceSearch2(int[] array,int key) {
int i;
array[0]=key;
i=array.length-1;
while(array[i]!=key) {
i--;
}
return i;
}
}
3.有序表查找
3.1折半查找
折半查找,BinarySearch