21xrx.com
2024-11-22 01:35:23 Friday
登录
文章检索 我的文章 写文章
C++查找算法代码板子
2023-11-17 06:53:12 深夜i     --     --
C++ 查找算法 代码板子 搜索算法 数据结构

在C++编程中,查找算法是一种常用的技巧,用于在给定的数据集合中查找特定值或元素。C++提供了多种查找算法,如线性查找、二分查找和哈希查找等。接下来,我们将介绍一些常见的C++查找算法代码板子,帮助您理解和应用这些算法。

1. 线性查找(Linear Search):

线性查找是一种简单直观的查找方法,通过逐个比较待查找值与集合中元素的值,直到找到匹配的元素或遍历完整个集合。下面是一个使用线性查找算法实现的代码:


int linearSearch(int arr[], int size, int target) {

  for (int i = 0; i < size; i++) {

    if (arr[i] == target)

      return i; // 返回匹配元素的索引

    

  }

  return -1; // 表示未找到匹配元素

}

2. 二分查找(Binary Search):

二分查找是一种高效的查找算法,前提是集合已排序。该算法将待查找值与集合中间的元素进行比较,不断减半查找范围,直到找到匹配元素或确定无匹配。以下是使用二分查找算法实现的代码:


int binarySearch(int arr[], int left, int right, int target) {

  while (left <= right) {

    int mid = left + (right - left) / 2; // 计算中间元素索引

    if (arr[mid] == target)

      return mid; // 返回匹配元素的索引

    

    if (arr[mid] < target) {

      left = mid + 1; // 在右半部分继续查找

    } else

      right = mid - 1; // 在左半部分继续查找

    

  }

  return -1; // 表示未找到匹配元素

}

注意:二分查找要求集合是有序的,如果集合未排序,需要事先进行排序操作。

3. 哈希查找(Hash Search):

哈希查找是一种利用哈希表进行查找的方法,可以在常数时间内找到匹配元素。它的效率很高,但需要额外的空间来存储哈希表。以下是一个使用哈希查找算法实现的代码:


#include <unordered_map>

int hashSearch(int arr[], int size, int target) {

  std::unordered_map<int, int> hashMap;

  for (int i = 0; i < size; i++) {

    hashMap[arr[i]] = i; // 将元素和索引存储到哈希表中

  }

  if (hashMap.find(target) != hashMap.end()) {

    return hashMap[target]; // 返回匹配元素的索引

  }

  return -1; // 表示未找到匹配元素

}

以上是一些常见的C++查找算法代码板子,您可以根据具体的需求选择适用的算法。使用正确的查找算法可以提高程序的效率和性能,同时也是C++编程的重要组成部分。希望这些代码能对您的学习和实践有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复