C语言顺序查找法和折半查找法代码实现
时间: 2023-12-10 11:34:24 浏览: 310
以下是C语言实现顺序查找和折半查找的代码实现:
1. 顺序查找
```c
#include <stdio.h>
int SeqSearch(int r[], int n, int k) {
r[0] = k; // 下标0用作哨兵存放待查找的元素
int i;
for (i = n; r[i] != k; i--); // 从后往前查找
return i; // 返回查找到的元素下标,未找到返回0
}
int main() {
int r[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = sizeof(r) / sizeof(int) - 1; // 数组长度
int k = 5; // 待查找元素
int index = SeqSearch(r, n, k);
if (index) {
printf("找到元素%d了,在第%d个\n", k, index);
} else {
printf("找不到该元素%d\n", k);
}
return 0;
}
```
2. 折半查找
```c
#include <stdio.h>
int BinSearch(int r[], int n, int k) {
int low = 1, high = n, mid;
while (low <= high) {
mid = (low + high) / 2;
if (r[mid] == k) {
return mid;
} else if (r[mid] > k) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return 0; // 未找到返回0
}
int main() {
int r[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = sizeof(r) / sizeof(int) - 1; // 数组长度
int k = 5; // 待查找元素
int index = BinSearch(r, n, k);
if (index) {
printf("找到元素%d了,在第%d个\n", k, index);
} else {
printf("找不到该元素%d\n", k);
}
return 0;
}
```
阅读全文