线性表的查找方法:顺序查找(线性查找),折半查找(二分查找或对分查找),分块查找
顺序查找:
基本思想:依次将每一个数据元素的关键字值与给定值key进行比较,若某个数据元素的关键字值等于key,则表明查找成功;若直到所有数据元素都比较完毕,仍找不到关键字值为key的数据元素,则表明失败。
(1)针对的数据可以是有序的也可以是无序的
(2)顺序依次查找
(3)顺序查找的比较次数n-i+1(n是数据的长度,i是查找出数据的位置)
(4)平均查找长度(n+1)/2
(5)顺序查找的优点:适用于顺序表,也使用于单链表
public static int seqSearch(int a[], int key) {//a是要检索的数组,key是要查找的元素,如果找到就返回所在的位置,如果没有就返回-1
int i = 0;
int n = a.length;
while (i < n && a[i] != key) {
i++;
}
if (i < n) {
return i;
} else {
return -1;
}
}
二分查找:
基本思想:首先取整个有序表的中间记录的关键字值与给定值相比较,若相等,则查找成功;否则以位于中间位置的数据元素为分界点,将查找表分成左右两个子表,并判断待查找的关键字值key是在左子表还是在右子表,再在左或右子表中重复上述步骤,直到找到关键字值为key的记录或子表长度为0
(1)二分查找针对的是有序
(2)平均查找长度:log2(n+1)-1
public static int binarySearch(int a[], int key) {
int low = 0;
int high = a.length;
while (low <= high) {
int mid = (low + high) / 2;
if (a[mid] == key) {
return mid;
} else if (a[mid] > key) {
high = mid - 1;
} else if(a[mid]< key) {
low = mid + 1;
}else
return -1;
}
return -1;
}
分块查找
分块查找是顺序查找和二分查找的一种结合
基本思想:首先把线性表分为若干块,在每一块中,结点的存放不一定有序,但块与块之间必须是有序的,同时建立一个索引表,找出每个块中最大的值,放入索引中,将待查找的数据与索引表的数据进行比较判断记录可能所在的块,确定块后,对该块进行顺序查找。
1.在长度为n的线性表中顺序查找时,不成功情况下平均比较次数是______。
A、n
B、n/2
C、(n+1)/2
D、(n-1)/2
答案:A
2.在长度为n的线性表中顺序查找时,成功情况下最多的比较次数是______。
A、1
B、n
C、n/2
D、(n+1)/2
答案:B
3.对长度为3的顺序表进行顺序查找,若查找第1个元素的概率是1/2,查找第2个元素的概率是1/3,查找第3个元素的概率是1/6,则成功查找表中任一元素的平均查找长度是______。
A、5/3
B、2
C、7/3
D、3
答案:A
4.对线性表进行折半查找时,要求线性表必须______。
A、以顺序方式存储
B、以链接方式存储
C、以顺序方式存储,且结点按关键字有序排序
D、以链表方式存储,且结点按关键字有序排序
答案:C
5.折半查找对应的判定树中,外部结点是______。
A、一次成功查找过程终止的结点
B、一次失败查找过程终止的结点
C、一次成功查找过程中经过的中间结点
D、一次失败查找过程中经过的中间结点
答案:B
6.已知一个长度为16的有序顺序表R[1..16],采用折半查找方法查找一个存在的元素,则比较的次数最多是______。
A、5
B、4
C、7
D、6
答案:A
7.设有100个元素的有序顺序表,采用折半查找方法,不成功时最大的比较次数是______。
A、25
B、50
C、10
D、7
答案:D
8.有一个长度为12的有序表R[0..11],按折半查找法对该表进行查找,在表内各元素等概率情况下查找成功所需的平均比较次数为______。
A、35/12
B、37/12
C、39/12
D、43/12
答案:B
9.有一个长度为12的有序表R[0..11],按折半查找法对该表进行查找,在表内各元素等概率情况下查找不成功所需的平均比较次数为______。
A、35/11
B、37/12
C、49/12
D、49/13
答案:D
10.有一个有序表为(1,3,9,12,32,41,45,62,75,77,82,95,99),当采用折半查找法查找关键字为82的元素时,______ 次比较后查找成功。
A、1
B、2
C、4
D、8
答案:C
11.有一个长度为n的有序顺序表,采用折半查找,经过i次比较成功找到的最多元素个数是______。
A、2i
B、2i+1
C、2i-1
D、2i-1
答案:C
12.当采用分块查找时,数据的组织方式为______。
A、数据分成若干块,每块内数据有序
B、数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的关键字组成索引块
C、数据分成若干块,每块内数据有序,每块内最大(或最小)的关键字组成索引块
D、数据分成若干块,每块中的数据个数必须相同
答案:B
13.对含有3600个元素的顺序表进行分块查找,若索引表和方块均采用顺序查找方法,最理想的块长是______。
A、1800
B、60
C、1200
D、log23600
答案:B
14.设待查关键字为47,且已存入变量k中,如果在查找过程中,和k进行比较的元素依次是47、32、46、25、47,则所采用的查找方法______。
A、是一种错误的方法
B、可能是分块查找
C、可能是顺序查找
D、可能是折半查找
答案:D
15.设待查关键字为47,且已存入变量k中,如果在查找过程中,和k进行比较的元素依次是27、72、16、84、47,则所采用的查找方法是______。
A、二叉排序树查找
B、分块查找
C、顺序查找
D、折半查找
答案:C
16.从19个元素的序列中查找其中某个元素,如果最多进行5次元素之间的比较,则采用的查找方法只可能是______。
A、折半查找
B、分块查找
C、顺序查找
D、二叉排序树查找
答案:A
17.假设有k个关键字互为同义词,若用线性探测法把这k个关键字插入到哈希表中,至少要进行______ 次探测。
A. k-1
B. k
C. k+1
D. k(k+1)/2
答案:D
18.对于下列关键字序列,不可能构成某二叉排序树中一条查找路径是______。
A. 95,22,91,24,94,71
B. 92,20,91,34,88,35
C. 21,89,77,29,36,38
D. 12,25,71,68,33,34
答案:A
19.一棵二叉排序树是由关键字集合{18,43,27,44,36,39}中的某个关键字序列构建的,其中序遍历序列是______。
A. 树形未定,无法确定
B. 18,43,27,77,44,36,39
C. 18,27,36,39,43,44,77
D. 18,44,43,39,36,27,77
答案:C
20.以下查找方法中速度最快的是______。
A. 折半查找
B. 顺序查找
C. 分块查找
D. 二叉排序树查找
答案:A
21.下面有关哈希表的叙述中,正确的是______。
A. 哈希查找的时间与元素个数n成正比
B. 不管是开放地址法还是拉链法,查找时间都与装填因子α有关
C. 线性探测法存在堆积现象,而拉链法不存在堆积现象
D. 拉链法中装填因子α必须小于1
答案:B
22.在哈希查找过程中,可用______ 来处理冲突。
A. 除留余数法
B. 数字分析法
C. 线性探测法
D. 关键字比较法
答案:C
23.哈希表中出现同义词冲突是指______。
A. 两个元素具有相同的序号
B. 两个元素的关键字不同,而其他属性相同
C. 数据元素过多
D. 两个元素的关键字不同,而对应的哈希函数值相同
答案:D
24.为提高哈希(Hash)表的查找效率,可以采取的正确措施是______。
Ⅰ.增大装填因子
Ⅱ.设计冲突少的哈希函数
Ⅲ.处理冲突时避免产生堆积现象
A. 仅Ⅰ
B. 仅Ⅱ
C. 仅Ⅰ、Ⅱ
D. 仅Ⅱ、Ⅲ
答案:D
25.采用线性探查法解决冲突的哈希表中,引起的堆积现象的原因是______。
A. 同义词之间发生冲突
B. 非同义词之间发生冲突
C. 同义词或非同义词之间发生冲突
D. 哈希表溢出
答案:B
26.由一个关键字序列建立一棵二叉排序树,该二叉排序树的形状取决于______。
A. 该序列的存储结构
B. 序列中的关键字的取值范围
C. 关键字的输入次序
D. 使用的计算机的软、硬件条件
答案:C
27.有一个有序表为(1,3,9,12,32,41,45,62,75,77,82,95,99),当采用折半查找法查找关键字为82的元素时,______ 次比较后查找成功。
A. 1
B. 2
C. 4
D. 8
答案:C
28.在长度为n的线性表中顺序查找时,成功情况下最多的比较次数是______。
A. 1
B. n
C. n/2
D. (n+1)/2
答案:B
29.对长度为3的顺序表进行顺序查找,若查找第1个元素的概率是1/2,查找第2个元素的概率是1/3,查找第3个元素的概率是1/6,则成功查找表中任一元素的平均查找长度是______。
A. 5/3
B. 2
C. 7/3
D. 3
答案:A
30.对线性表进行折半查找时,要求线性表必须______。
A. 以顺序方式存储
B. 以链接方式存储
C. 以顺序方式存储,且结点按关键字有序排序
D. 以链表方式存储,且结点按关键字有序排序
答案:C
31.折半查找对应的判定树中,外部结点是______。
A. 一次成功查找过程终止的结点
B. 一次失败查找过程终止的结点
C. 一次成功查找过程中经过的中间结点
D. 一次失败查找过程中经过的中间结点
答案:B