赞
踩
在数据处理中,查找操作是非常重要的一部分。顺序查找和折半查找是两种常见的查找方法,它们各有优缺点和适用场景。以下是对这两种查找方法的详细介绍。
定义:顺序查找(Sequential Search),也称线性查找,是一种最简单、最直接的查找方法。它从数据集的第一个元素开始,逐个检查每个元素,直到找到目标元素或检查完整个数据集。
算法实现:
#include <stdio.h> int SequentialSearch(int arr[], int n, int key) { for (int i = 0; i < n; i++) { if (arr[i] == key) { return i; // 返回元素下标 } } return -1; // 查找失败 } int main() { int arr[] = {1, 3, 5, 7, 9, 11}; int n = sizeof(arr) / sizeof(arr[0]); int key = 7; int result = SequentialSearch(arr, n, key); if (result != -1) { printf("元素 %d 的下标是: %d\n", key, result); } else { printf("元素 %d 未找到\n", key); } return 0; }
优点:
缺点:
定义:折半查找(Binary Search),也称二分查找,是一种效率较高的查找方法。它适用于有序数据集,通过逐步缩小查找范围,快速找到目标元素。
算法实现:
#include <stdio.h> int BinarySearch(int arr[], int low, int high, int key) { while (low <= high) { int mid = low + (high - low) / 2; if (arr[mid] == key) { return mid; // 返回元素下标 } if (arr[mid] < key) { low = mid + 1; } else { high = mid - 1; } } return -1; // 查找失败 } int main() { int arr[] = {1, 3, 5, 7, 9, 11}; int n = sizeof(arr) / sizeof(arr[0]); int key = 7; int result = BinarySearch(arr, 0, n - 1, key); if (result != -1) { printf("元素 %d 的下标是: %d\n", key, result); } else { printf("元素 %d 未找到\n", key); } return 0; }
优点:
缺点:
顺序查找适用于:
折半查找适用于:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。