数据结构c++实现二分查找代码
时间: 2023-12-09 13:35:58 浏览: 41
以下是C++实现二分查找的代码:
```cpp
template<typename T>
int binary_search(T arr[], int size, T value) {
int left = 0, right = size - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == value) {
return mid;
} else if (arr[mid] < value) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
相关问题
c++QT实现二分查找过程的图形化界面
C++和QT可以很好地结合,实现图形化界面来展示二分查找的过程。下面是一个简单的示例代码,演示了如何使用QT编写一个图形化界面来展示二分查找的过程。
```cpp
#include <QtWidgets>
class BinarySearchWidget : public QWidget {
Q_OBJECT
public:
BinarySearchWidget(QWidget *parent = nullptr)
: QWidget(parent)
{
setupUI();
}
private slots:
void searchButtonClicked()
{
int target = targetLineEdit->text().toInt();
int result = binarySearch(target);
if (result == -1) {
resultLabel->setText("目标值不存在");
} else {
resultLabel->setText("目标值在索引位置 " + QString::number(result));
}
}
private:
void setupUI()
{
QVBoxLayout *mainLayout = new QVBoxLayout(this);
QHBoxLayout *inputLayout = new QHBoxLayout;
QLabel *targetLabel = new QLabel("目标值:");
targetLineEdit = new QLineEdit;
QPushButton *searchButton = new QPushButton("搜索");
connect(searchButton, SIGNAL(clicked()), this, SLOT(searchButtonClicked()));
inputLayout->addWidget(targetLabel);
inputLayout->addWidget(targetLineEdit);
inputLayout->addWidget(searchButton);
resultLabel = new QLabel;
mainLayout->addLayout(inputLayout);
mainLayout->addWidget(resultLabel);
}
int binarySearch(int target)
{
// 在这里实现二分查找的逻辑
// 返回目标值所在的索引,如果不存在则返回-1
}
QLineEdit *targetLineEdit;
QLabel *resultLabel;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
BinarySearchWidget widget;
widget.show();
return app.exec();
}
#include "main.moc"
```
在这个示例中,我们创建了一个继承自`QWidget`的`BinarySearchWidget`类,用于展示二分查找的图形化界面。界面中包含一个输入框用于输入目标值,一个搜索按钮,还有一个用于显示结果的标签。
当用户点击搜索按钮时,会触发`searchButtonClicked`槽函数。在这个槽函数中,我们从输入框中获取目标值,然后调用`binarySearch`函数进行二分查找。根据查找结果,更新结果标签的文本内容。
需要注意的是,在示例代码中的`binarySearch`函数中,你需要实现二分查找的逻辑。根据具体需求,你可以自定义你的数据结构和算法来完成二分查找。
最后,在`main`函数中,我们创建了一个`BinarySearchWidget`对象并显示出来。
这只是一个简单的示例,你可以根据自己的需求进行进一步的定制和扩展。希望对你有所帮助!
c++实现数据结构和算法
C语言可以用来实现各种数据结构和算法。以下是一些常见的数据结构和算法的实现方式:
1. 数组:C语言的数组是最基本的数据结构之一,它可以用来存储一组相同类型的元素。
2. 链表:链表是一种动态数据结构,它由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针。
3. 栈:栈是一种后进先出(LIFO)的数据结构,可以用数组或链表实现。
4. 队列:队列是一种先进先出(FIFO)的数据结构,可以用数组或链表实现。
5. 树:二叉树是一种常见的树结构,它每个节点最多有两个子节点。其他常见的树结构包括二叉搜索树、AVL树、红黑树等。
6. 图:图是由节点和边组成的非线性数据结构,可以用邻接矩阵或邻接表等方式实现。
7. 排序算法:常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序等。
8. 查找算法:常见的查找算法有线性查找、二分查找、哈希查找等。
9. 动态规划:动态规划是一种将复杂问题分解为简单子问题并进行逐步求解的算法思想,常用于解决最优化问题。
10. 图算法:常见的图算法有深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径算法(如Dijkstra算法、Floyd-Warshall算法)等。