折半查找法实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. 理解折半查找法的基本原理和适用条件。

2. 掌握折半查找法的实现方法。

3. 通过实验验证折半查找法的效率。

二、实验环境
1. 操作系统:Windows 10
2. 编程语言:C++
3. 开发工具:Visual Studio 2019
三、实验内容
1. 实现折半查找法。

2. 对折半查找法进行测试,包括:
a. 对已排序的数组进行查找;
b. 对未排序的数组进行查找;
c. 查找不存在的元素。

四、实验步骤
1. 定义一个整型数组,并对其进行排序。

2. 实现折半查找函数,包括:
a. 定义折半查找函数的参数,包括数组、目标值和数组的长度;
b. 实现折半查找算法;
c. 返回查找结果,包括找到的位置和未找到。

3. 对已排序的数组进行查找,输出查找结果。

4. 对未排序的数组进行查找,输出查找结果。

5. 对不存在的元素进行查找,输出查找结果。

```cpp
#include <iostream>
#include <algorithm>
// 折半查找函数
int binarySearch(const int arr, int target, int left, int right) { while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid; // 找到目标值,返回位置
} else if (arr[mid] < target) {
left = mid + 1; // 在右侧查找
} else {
right = mid - 1; // 在左侧查找
}
}
return -1; // 未找到目标值
}
int main() {
// 测试数组
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 11; // 目标值
// 对数组进行排序
std::sort(arr, arr + n);
// 对已排序的数组进行查找
int index = binarySearch(arr, target, 0, n - 1);
if (index != -1) {
std::cout << "已排序数组中找到目标值:" << target << ",位置为:" << index << std::endl;
} else {
std::cout << "已排序数组中未找到目标值:" << target << std::endl;
}
// 对未排序的数组进行查找
int unsortedArr[] = {9, 5, 3, 7, 1, 11, 13, 17, 15, 19};
int unsortedIndex = binarySearch(unsortedArr, target, 0, n - 1);
if (unsortedIndex != -1) {
std::cout << "未排序数组中找到目标值:" << target << ",位置为:" << unsortedIndex << std::endl;
} else {
std::cout << "未排序数组中未找到目标值:" << target << std::endl;
}
// 对不存在的元素进行查找
int notExistTarget = 20;
int notExistIndex = binarySearch(arr, notExistTarget, 0, n - 1);
if (notExistIndex != -1) {
std::cout << "数组中找到目标值:" << notExistTarget << ",位置为:" << notExistIndex << std::endl;
} else {
std::cout << "数组中未找到目标值:" << notExistTarget <<
std::endl;
}
return 0;
}
```
六、实验结果与分析
1. 对已排序的数组进行查找,折半查找法成功找到了目标值,查找效率较高。

2. 对未排序的数组进行查找,折半查找法同样找到了目标值,但效率相对较低,
因为需要对数组进行排序。

3. 对不存在的元素进行查找,折半查找法未找到目标值,符合预期。

七、实验结论
1. 折半查找法适用于已排序的数组,查找效率较高。

2. 折半查找法不适用于未排序的数组,因为需要先对数组进行排序。

3. 实验验证了折半查找法的正确性和效率。

相关文档
最新文档