用C语言编写程序实现顺序查找和折半查找。
时间: 2024-05-10 21:15:57 浏览: 108
C语言程序设编写程序在数组中查找一个数要求 ⑴用顺序查找实现 ⑵用折半查找实现。 注:若有该数,则输出该数,否则输出“无此数”。
5星 · 资源好评率100%
顺序查找,也称线性查找,是一种简单的查找算法。它从数据结构的起始位置开始,逐个比较所需查找的关键字,直到找到相等的关键字或查找到结构的末尾。以下是C语言实现顺序查找的代码示例:
```c
#include <stdio.h>
int sequentialSearch(int arr[], int n, int x) {
int i;
for (i = 0; i < n; i++) {
if (arr[i] == x) {
return i;
}
}
return -1;
}
int main() {
int arr[] = { 1, 2, 3, 4, 5 };
int n = sizeof(arr) / sizeof(arr[0]);
int x = 4;
int result = sequentialSearch(arr, n, x);
if (result == -1) {
printf("Element not found\n");
} else {
printf("Element found at index: %d\n", result);
}
return 0;
}
```
折半查找,也称二分查找,是一种高效的查找算法。它要求数据结构必须有序,然后将所需查找的关键字与中间位置的关键字进行比较,如果相等则返回位置,如果不相等则根据关键字的大小关系在左侧或右侧继续查找。以下是C语言实现折半查找的代码示例:
```c
#include <stdio.h>
int binarySearch(int arr[], int l, int r, int x) {
while (l <= r) {
int mid = l + (r - l) / 2;
if (arr[mid] == x) {
return mid;
}
if (arr[mid] < x) {
l = mid + 1;
} else {
r = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = { 1, 2, 3, 4, 5 };
int n = sizeof(arr) / sizeof(arr[0]);
int x = 4;
int result = binarySearch(arr, 0, n - 1, x);
if (result == -1) {
printf("Element not found\n");
} else {
printf("Element found at index: %d\n", result);
}
return 0;
}
```
阅读全文