21xrx.com
2024-11-10 00:31:59 Sunday
登录
文章检索 我的文章 写文章
C++实现二分法查找10个排好序的线性表
2023-07-05 03:52:09 深夜i     --     --
C++ 二分法 查找 排序 线性表

二分法查找是一种高效的查找算法,它能够快速地在有序的线性表中查找指定元素。在程序设计中,C++语言中提供了方便的库函数,可以方便地实现二分法查找算法。

现在我们来看一下如何使用C++实现二分法查找10个排好序的线性表。

首先,我们需要定义一个包含10个元素的数组来存储排好序的数据。我们可以使用int或者其他数据类型作为元素类型。代码如下:


int data[10] = 13;

接下来,我们需要实现二分法查找算法。二分法查找算法的核心是不断将查找区间划分成两半,并且根据当前位置的元素和目标元素的大小关系判断它应该在哪一半中继续查找。代码如下:


int binarySearch(int* data, int target, int left, int right) {

 while (left <= right) {

  int mid = left + (right - left) / 2;

  if (data[mid] == target) return mid;

  else if (data[mid] < target) left = mid + 1;

  else right = mid - 1;

 }

 return -1;

}

在这段代码中,参数data指向查找的数组,target是要查找的目标元素,left和right指示当前查找区间的左右边界。

在实际应用时,我们可以先对数据进行排序,然后调用上面的函数进行查找。示例代码如下:


#include <iostream>

#include <algorithm>

using namespace std;

int binarySearch(int* data, int target, int left, int right) {

 while (left <= right) {

  int mid = left + (right - left) / 2;

  if (data[mid] == target) return mid;

  else if (data[mid] < target) left = mid + 1;

  else right = mid - 1;

 }

 return -1;

}

int main() {

 int data[10] = 8;

 sort(data, data + 10); // 排序

 int target = 6;

 int index = binarySearch(data, target, 0, 9);

 if (index != -1) 索引是" << index << endl;

  else

  cout << "没有找到" << endl;

 

 return 0;

}

这个程序先将数据进行排序,然后查找目标元素6的位置。最终输出结果为“找到了,索引是3”。

在实际应用中,我们需要根据情况进行调整。例如,由于数组下标从0开始,所以在传递参数时,右边界应该是数组长度减1;如果是其他类型的数据,需要修改数据类型和比较方式等。此外,为了避免内存泄露等问题,我们需要在程序中加入其它的代码。

  
  

评论区

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