21xrx.com
2024-06-03 07:18:16 Monday
登录
文章检索 我的文章 写文章
C++实现顺序查找和二分查找:原理与代码
2023-07-10 15:47:28 深夜i     --     --
C++ 顺序查找 二分查找 原理 代码

顺序查找和二分查找是两种常见的查找算法。本文将介绍C++实现顺序查找和二分查找的原理和代码。

一、顺序查找

顺序查找也称为线性查找,是从数据集的第一个元素开始,逐个比较每个元素直到找到目标元素或搜索到数据集的末尾。

顺序查找的时间复杂度是O(n),即最差情况下需要遍历整个数据集。实现顺序查找的代码如下:


int seqSearch(int arr[], int n, int target){

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

    if(arr[i] == target)

      return i;

    

  }

  return -1;

}

该函数接受一个整型数组arr、数组长度n和目标元素target作为参数,返回目标元素在数组中的下标(若未找到则返回-1)。

二、二分查找

二分查找也称为折半查找,是一种基于分治思想的查找算法。二分查找要求数据集为有序集合,通过不断缩小查找范围,最终得到目标元素。

二分查找的时间复杂度是O(logn),即每次查找都将数据集缩小一半,最坏情况下需要执行log2 n次查找。实现二分查找的代码如下:


int binarySearch(int arr[], int n, int target){

  int left = 0, right = n-1;

  while(left <= right){

    int mid = (left + right) / 2;

    if(arr[mid] == target)

      return mid;

    else if(arr[mid] > target)

      right = mid - 1;

    else{

      left = mid + 1;

    }

  }

  return -1;

}

该函数接受一个整型数组arr、数组长度n和目标元素target作为参数,返回目标元素在数组中的下标(若未找到则返回-1)。

三、总结

顺序查找和二分查找是常见的查找算法,各有优缺点。顺序查找适用于无序数据集,二分查找适用于有序数据集。在实际应用中应根据具体情况选择不同的查找算法。C++实现顺序查找和二分查找的代码均简单易懂,可以供大家参考。

  
  

评论区

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