已排序的关键字序列:{4,10,18,21,33,34,42,53,59},使用二分查找 (1)、如果查找关键字21,写出需要比较的关键字序列 (2)、如果查找关键字53,写出需要比较的关键字序列 (3)、如果查找关键字39,写出需要比较的关键字序列
时间: 2024-02-09 09:07:31 浏览: 28
好的,针对你的问题,我来回答:
1. 查找关键字21需要比较的关键字序列为:{21, 18, 34, 10, 4}。
2. 查找关键字53需要比较的关键字序列为:{33, 53, 42}。
3. 查找关键字39需要比较的关键字序列为:{33, 42, 21}。
需要注意的是,二分查找只适用于已排序的关键字序列,如果关键字序列未排序,则需要先进行排序。同时,二分查找的时间复杂度为 O(log n),相较于顺序查找的 O(n) 更为高效。
相关问题
设有已排序数据的关键字序列为:(2,6,15,25,35,50,60,77,80),请简述采用折半查找方法,从该数据序列中查找关键字为50的数据的过程。
(0, 0, 0, 0.5);
}
.wx-address-book__modal-content {
background-color: #fff;
折半查找(二分查找)是一种高效的查找方法,可以在有序序列中快速 padding: 40px;
border-radius: 5px;
}
.wx-address-book__modal h2 {
font-size: 地查找到指定的元素。
以查找关键字为50的数据为例,具体过程如下24px;
font-weight: bold;
margin-bottom: 20px;
}
.wx-address-book__form-group {
margin-bottom::
1. 确定序列的中间位置,即 (0 + 8) / 2 = 4,取值为35。
2. 将查找的关键字50与序列中间位置的元素35进行比较,由于50 20px;
}
.wx-address-book__form-group--center {
display: flex;
flex-direction: row;
align-items: > 35,因此50必须在序列的后半部分。
3. 确定后半部分的中间 center;
justify-content: center;
}
.wx-address-book__form label {
font-weight: bold;
margin-right: 10px位置,即 (5 + 8) / 2 = 6,取值为60。
4. 将查找的关键;
}
.wx-address-book__form input {
padding: 5px;
margin-right: 10px;
border-radius: 字50与后半部分的中间位置的元素60进行比较,由于50 < 60,因此503px;
border: 1px solid #ccc;
}
.wx-address-book__submit-btn {
background-color: #007fff;
必须在序列的前半部分。
5. 确定前半部分的中间位置,即 (5 + color: #fff;
border-radius: 3px;
border: none;
padding: 5px 10px;
6) / 2 = 5,取值为50。
6. 将查找的关键字50与前半部分的中间位置的元素50进行比较,相等,找到了关键字为50的数据。
因此, cursor: pointer;
}
.wx-address-book__submit-btn:hover {
background-color: #0066cc;
}
.wx-address-book__cancel折半查找过程中一共进行了3次比较,查找的时间复杂度为 O(log2n)。
给定11个关键字序列22,66, 9,11,6,33,7,56,18,19,16试分别用二分查找(假设已排序)、二叉排序树查找(不做平衡)、散列查找的开地 址法(用线性探查法,模取13的HASH函数)和拉链法(模取7的HASH函数))来实现查找的平均查找长度
1. 二分查找法平均查找长度:
首先需要将序列排序,排好序后,每次查找中间位置的数,比较关键字大小,然后根据比较结果缩小查找范围,直到找到目标数据或者范围缩小到只有一个数。
对于11个关键字序列,排序后为6,7,9,11,16,18,19,22,33,56,66。则平均查找长度为:log2(11) ≈ 3.46。
2. 二叉排序树查找法平均查找长度:
将11个关键字序列依次插入到一棵二叉排序树中,查找时从根节点开始,比较关键字大小,根据比较结果选择左子树或右子树继续查找,直到找到目标数据或者发现节点为NULL。
对于这11个关键字序列,可以构建如下的二叉排序树:
```
22
/ \
11 66
/ \ \
9 16 56
/ / \ / \
6 18 19 33 67
```
则平均查找长度为:(1+2+2+3+3+3+4+4+4+4+5)/11 ≈ 3.36。
3. 散列查找的开地址法平均查找长度:
使用线性探查法,将11个关键字序列依次插入到一个大小为13的散列表中,冲突时采用线性探查法,即向后查找直到找到空位为止。
使用模取13的HASH函数,对于每个关键字计算出的散列地址如下所示:
```
22 -> 9
66 -> 3
9 -> 9
11 -> 11
6 -> 6
33 -> 7
7 -> 7
56 -> 4
18 -> 5
19 -> 6
16 -> 3
```
插入完成后,散列表如下所示:
```
0:
1:
2:
3: 66 16
4: 56
5: 18
6: 19
7: 33 7
8:
9: 22 9
10:
11: 11
12: 6
```
则平均查找长度为:(1+2+2+4+3+1+1+3+2+2+4)/11 ≈ 2.18。
4. 散列查找的拉链法平均查找长度:
使用拉链法,将11个关键字序列依次插入到一个大小为7的散列表中,冲突时采用链表法,即在散列表中的每个位置上维护一个链表,将冲突的元素插入到链表中。
使用模取7的HASH函数,对于每个关键字计算出的散列地址如下所示:
```
22 -> 1
66 -> 3
9 -> 2
11 -> 4
6 -> 6
33 -> 5
7 -> 0
56 -> 0
18 -> 4
19 -> 5
16 -> 2
```
插入完成后,散列表如下所示:
```
0: 7 -> 56
1: 22
2: 9 -> 16
3: 66
4: 11 -> 18
5: 33 -> 19
6: 6
```
则平均查找长度为:(1+1+2+1+2+2+1+1+2+2+2)/11 ≈ 1.82。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)