c语言中查询函数
在C语言中,查询函数通常是指查或搜索某个特定值的函数。这些函数通常用于数组、链表等数据结构中。以下是一些常用的查询函数:
1. 线性查(Linear Search):在数组中查特定值的简单方法。它从数组的第一个元素开始,逐个比较每个元素,直到到目标值或遍历完整个数组。时间复杂度为O(n)。
c
#include <stdio.h>
int linear_search(int arr[], int n, int target) {
    for (int i = 0; i < n; i++) {
        if (arr[i] == target) {
            return i; // 返回目标值的索引
        }
    }
    return -1; // 如果没有到目标值,返回-1
}
int main() {
    int arr[] = {1, 3, 5, 7, 9};
    int target = 5;
    int n = sizeof(arr) / sizeof(arr[0]);
    int index = linear_search(arr, n, target);
    if (index != -1) {
        printf("到目标值 %d 在索引 %d\n", target, index);
    } else {
        printf("未到目标值 %d\n", target);
    }
    return 0;
}
2. 二分查(Binary Search):在已排序的数组中查特定值的方法。它通过将数组分成两半,然后根据目标值与中间元素的比较结果来确定下一步查的范围。时间复杂度为O(log n)。
c
#include <stdio.h>
int binary_search(int arr[], int n, int target) {
    int left = 0;
    int right = n - 1;
c语言库函数
    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
}
int main() {
    int arr[] = {1, 3, 5, 7, 9};
    int target = 5;
    int n = sizeof(arr) / sizeof(arr[0]);
    int index = binary_search(arr, n, target);
    if (index != -1) {
        printf("到目标值 %d 在索引 %d\n", target, index);
    } else {
        printf("未到目标值 %d\n", target);
    }
    return 0;
}
3. 哈希查(Hashing):通过使用哈希表来存储和查特定值的方法。哈希表是一种基于哈希函数的数据结构,可以将键值对映射到表中的特定位置。查时间复杂度接近O(1),但需要额外的空间来存储哈希表。
c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
    int key;
    int value;