设计一个程序,用于演示折半查找和哈希查找。测试数据如下: 1、对{1,3,9,12,32,41,
时间: 2023-09-03 09:06:02 浏览: 72
数据结构查找方法 哈希查找 折半查找 顺序查找
这里提供一个C语言的示例程序,用于演示折半查找和哈希查找的实现。程序中包含两个函数,分别是binarySearch和hashSearch,用于实现折半查找和哈希查找。
```
#include <stdio.h>
// 折半查找
int binarySearch(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
// 哈希查找
int hashSearch(int arr[], int n, int target) {
int hashTable[100] = {0};
for (int i = 0; i < n; i++) {
int index = arr[i] % 100;
while (hashTable[index] != 0) {
index = (index + 1) % 100;
}
hashTable[index] = arr[i];
}
int index = target % 100;
while (hashTable[index] != target) {
index = (index + 1) % 100;
if (hashTable[index] == 0) {
return -1;
}
}
return index;
}
int main() {
int arr[] = {1, 3, 9, 12, 32, 41, 55};
int n = sizeof(arr) / sizeof(int);
// 折半查找
int target1 = 12;
int index1 = binarySearch(arr, n, target1);
if (index1 == -1) {
printf("折半查找:未找到 %d\n", target1);
} else {
printf("折半查找:找到 %d,下标为 %d\n", target1, index1);
}
// 哈希查找
int target2 = 41;
int index2 = hashSearch(arr, n, target2);
if (index2 == -1) {
printf("哈希查找:未找到 %d\n", target2);
} else {
printf("哈希查找:找到 %d,下标为 %d\n", target2, index2);
}
return 0;
}
```
程序输出结果如下:
```
折半查找:找到 12,下标为 3
哈希查找:找到 41,下标为 5
```
这里的测试数据是 {1, 3, 9, 12, 32, 41, 55},程序中分别使用折半查找和哈希查找来查找 target1 = 12 和 target2 = 41。最终输出查找结果及对应的下标。
阅读全文