1.顺序查找:
顺序查找也称为线形查找,从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。 、
代码实现如下:
/**
*
* @param a-需要被查找的数组
* @param s-需要查找的元素
* @return int -返回查找到的索引值,-1表示没查到
*/
public static int seek(int[] a , int s){
for(int i = 0; i < a.length;i++){
if(a[i]==s){
return i;
}
}
return -1;
}
2.二分查找:
二分查找要求线形表中的结点按关键字值升序或降序排列,用给定值k先与中间结点的关键字比较,中间结点把线形表分成两个子表,若相等则查找成功;若不相等,再根据k与该中间结点关键字的比较结果确定下一步查找哪个子表,这样递归进行,直到查找到或查找结束发现表中没有这样的结点。
代码实现如下:
/**
*
* @param a 需要被查找的数组
* @param front 数组的第一个索引
* @param end 数组的最后一个索引
* @param seekFalue 需要查找的元素
* @return int 返回查到的元素索引,-1表示
*/
public static int seek(int[] a, int front, int end, int seekFalue) {
if (front <= end) {
int mid = (front + end) / 2;
if (a[mid] == seekFalue) {
return mid;
} else if (a[mid] > seekFalue) {
return seek(a, front, mid - 1, seekFalue);
} else if (a[mid] < seekFalue) {
return seek(a, mid + 1, end, seekFalue);
}
}
return -1;
}
3.分块查找:
分块查找也称为索引查找,把线形分成若干块,在每一块中的数据元素的存储顺序是任意的,但要求块与块之间须按关键字值的大小有序排列,还要建立一个按关键字值递增顺序排列的索引表,索引表中的一项对应线形表中的一块,索引项包括两个内容:① 键域存放相应块的最大关键字;② 链域存放指向本块第一个结点的指针。分块查找分两步进行,先确定待查找的结点属于哪一块,然后在块内查找结点。
代码实现如下:
4.哈希表查找:
