顺序查找与折半查找对比长代码c
时间: 2024-07-18 13:00:36 浏览: 58
顺序查找(Sequential Search)和折半查找(Binary Search)是两种常见的搜索算法,它们在实现上有着显著的区别,适用于不同场景:
1. **顺序查找**(Linear Search):
- 实现方法:从数组的第一个元素开始,逐个比较每个元素,直到找到目标值或遍历完整个数组。
- 代码示例(C语言):
```c
int linear_search(int arr[], int target, int n) {
for (int i = 0; i < n; i++) {
if (arr[i] == target) {
return i;
}
}
return -1; // 如果没找到,返回-1表示不存在
}
```
- 优点:简单易懂,适用于小规模数组或无序数据。
- 缺点:时间复杂度为O(n),对于大规模数据效率低下。
2. **折半查找**(Binary Search):
- 实现方法:首先确定中间元素,然后比较目标值和中间值,如果目标值小于中间值,就在左半部分继续查找;如果大于,就在右半部分查找;重复此过程直到找到目标或范围为空。
- 代码示例(C语言):
```c
int binary_search(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; // 同样,未找到则返回-1
}
```
- 优点:时间复杂度为O(log n),对于已排序的数组,搜索效率远高于顺序查找。
- 缺点:需要数组预先排序,且不适用于无序数据。
阅读全文