原始问题:
"CFree5.0实现顺序与折半查找算法及测试运行"
一、实验目的
- 掌握顺序查找和折半查找的原理和方法。
- 学会使用CFree5.0编写程序实现查找算法。
- 提高编程能力和调试程序的能力。
二、实验内容
实现顺序查找与折半查找的程序设计。
三、实验步骤
- 建立查找表
#include <stdio.h>
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}- 输出查找表
#include <stdio.h>
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}- 顺序查找算法
#include <stdio.h>
int sequential_search(int arr[], int n, int target) {
for (int i = 0; i < n; i++) {
if (arr[i] == target) {
return i;
}
}
return -1;
}- 折半查找算法
#include <stdio.h>
int binary_search(int arr[], int n, int target) {
int left = 0;
int right = n - 1;
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;
}- 主函数
#include <stdio.h>
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int n = sizeof(arr) / sizeof(arr[0]);
int target;
printf("请输入要查找的目标值:");
scanf("%d", &target);
int index_seq = sequential_search(arr, n, target);
int index_bin = binary_search(arr, n, target);
if (index_seq != -1) {
printf("顺序查找结果:目标值 %d 在数组中的位置为 %d
", target, index_seq);
} else {
printf("顺序查找失败,目标值 %d 不在数组中
", target);
}
if (index_bin != -1) {
printf("折半查找结果:目标值 %d 在数组中的位置为 %d
", target, index_bin);
} else {
printf("折半查找失败,目标值 %d 不在数组中
", target);
}
return 0;
}- 测试与运行
编译并运行上述代码,根据提示输入要查找的目标值,程序将输出查找结果。
Prev:对农户分布,农机分布,水利设施分布,农业设施占地分布,农业背后的社会福利保障的农业数据统计分析的建议