📜  C程序查找十进制数(1)

📅  最后修改于: 2023-12-03 15:14:26.430000             🧑  作者: Mango

C程序查找十进制数

C程序写作时,我们有时需要查找特定十进制数。以下是几种适用于不同场景的查找方法。

方法一:线性查找

线性查找(或顺序查找)是最简单的一种查找算法,可以用于无序列表或数组中查找元素。它从列表的第一个元素开始逐个检查,直到找到目标元素或检查完整个列表。

以下是一个简单的线性查找函数示例:

int linear_search(int arr[], int n, int target) {
    for (int i = 0; i < n; i++) {
        if (arr[i] == target) {
            return i; // 返回目标元素的下标
        }
    }
    return -1; // 列表中不存在目标元素
}
方法二:二分查找

二分查找(或折半查找)是一种更高效的查找算法,用于有序列表或数组中查找元素。它将目标元素与列表的中间元素进行比较,如果相等则返回中间元素下标,否则根据比较结果确定搜索范围的左半部分或右半部分,并在该部分中继续查找,直到找到目标元素或搜索范围为空。

以下是一个简单的二分查找函数示例:

int binary_search(int arr[], int n, int target) {
    int left = 0, right = n - 1, mid;
    while (left <= right) {
        mid = (left + right) / 2;
        if (arr[mid] == target) {
            return mid; // 返回中间元素的下标
        }
        if (arr[mid] < target) {
            left = mid + 1; // 在右半部分继续查找
        } else {
            right = mid - 1; // 在左半部分继续查找
        }
    }
    return -1; // 列表中不存在目标元素
}
方法三:哈希表查找

哈希表是一种基于哈希函数实现的数据结构,它可以支持常数级别的查找、插入和删除操作。哈希表通过将数据元素映射到桶(bucket)集合中,并在每个桶中维护一个链表或二叉搜索树,来实现高效的查找、插入和删除操作。

以下是一个简单的哈希表查找函数示例:

#define TABLE_SIZE 100

struct Node {
    int key;
    int value;
    struct Node* next;
};

struct Node* table[TABLE_SIZE] = {NULL};

int hash(int key) {
    return key % TABLE_SIZE;
}

void insert(int key, int value) {
    int index = hash(key);
    struct Node* node = malloc(sizeof(struct Node));
    node->key = key;
    node->value = value;
    node->next = table[index];
    table[index] = node;
}

int find(int key) {
    int index = hash(key);
    struct Node* node = table[index];
    while (node) {
        if (node->key == key) {
            return node->value; // 返回目标元素的值
        }
        node = node->next;
    }
    return -1; // 列表中不存在目标元素
}

以上是三种常见的C程序查找十进制数方法。根据不同的场景和数据结构特点,我们可以选择最适合的方法来实现高效的查找操作。