21xrx.com
2024-06-03 02:14:57 Monday
登录
文章检索 我的文章 写文章
C++搜索算法代码
2023-07-04 17:44:44 深夜i     --     --
C++ 搜索算法 代码 搜索 算法实现

搜索算法是计算机科学中最基础的算法之一,用于解决各种问题,例如在一个未排序的数组中查找特定元素或在树或图中查找特定节点等。C++作为一种流行的编程语言,使开发者能够使用多种搜索算法来解决各种问题。

以下是C++中经常用到的搜索算法:

1. 顺序搜索算法

顺序搜索算法是最简单的搜索算法之一,其实现过程就是遍历整个数组,查找指定元素。以下是C++顺序搜索算法的代码:


int sequentialSearch(int arr[], int n, int x) {

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

    if (arr[i] == x)

      return i;

    

  }

  return -1;

}

2. 二分搜索算法

二分搜索算法也称为折半查找法,是一种高效的搜索算法,用于查找已排序数组中的元素。二分搜索算法的实现过程是将数组不断分成两半,直到找到指定元素或区间不再存在元素。以下是C++二分搜索算法的代码:


int binarySearch(int arr[], int l, int r, int x) {

  while (l <= r) {

    int mid = l + (r - l) / 2;

    if (arr[mid] == x)

      return mid;

    

    if (arr[mid] < x) {

      l = mid + 1;

    }

    else

      r = mid - 1;

    

  }

  return -1;

}

3. 深度优先搜索算法

深度优先搜索算法是一种在图或树数据结构中遍历所有节点的算法。此算法的实现是从根节点开始遍历树的下一层,深入到每个子节点,直到所有节点都访问。以下是C++深度优先搜索算法的代码:


void DFS(int graph[][N], int v, bool visited[]) {

  visited[v] = true;

  cout << v << " ";

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

    if (graph[v][i] == 1 && !visited[i]) {

      DFS(graph, i, visited);

    }

  }

}

4. 广度优先搜索算法

广度优先搜索算法原理与深度优先搜索算法相似,但其实现方法略有不同。此算法从根节点开始遍历树的下一层,然后遍历每个节点的子节点,直到所有节点都访问。以下是C++广度优先搜索算法的代码:


void BFS(int graph[][N], int start) {

  bool visited[N];

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

    visited[i] = false;

  }

  queue<int> q;

  visited[start] = true;

  q.push(start);

  while (!q.empty()) {

    int v = q.front();

    cout << v << " ";

    q.pop();

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

      if (graph[v][i] == 1 && !visited[i]) {

        visited[i] = true;

        q.push(i);

      }

    }

  }

}

以上是C++常用的搜索算法,它们可以用于多种问题的解决。当然,在实践中,学习者可以根据具体问题选择适当的搜索算法。

  
  
下一篇: C++中的带参宏

评论区

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