(1)编写顺序表的查找算法 (2)编写折半查找算法。 (3)编写二叉排序树查找算法。
时间: 2024-01-10 17:03:35 浏览: 87
(1) 顺序表的查找算法可以使用线性查找,具体步骤如下:
1. 从表头开始遍历顺序表,依次将每个元素与待查找元素进行比较。
2. 若找到待查找元素,返回其在顺序表中的下标。
3. 若遍历完整个顺序表仍未找到待查找元素,返回-1表示查找失败。
以下是使用C++实现线性查找的示例代码:
```c++
int search(int arr[], int n, int x) {
for (int i = 0; i < n; i++) {
if (arr[i] == x) {
return i;
}
}
return -1;
}
```
(2) 折半查找算法是一种效率更高的查找算法,前提是顺序表是有序的。具体步骤如下:
1. 将待查找区间的中间位置作为起始点mid。
2. 将mid位置的元素与待查找元素进行比较。
3. 若mid位置的元素等于待查找元素,则返回mid。
4. 若mid位置的元素大于待查找元素,则在mid左侧的区间中继续查找,重复步骤1~3。
5. 若mid位置的元素小于待查找元素,则在mid右侧的区间中继续查找,重复步骤1~3。
6. 若查找区间为空,则返回-1表示查找失败。
以下是使用C++实现折半查找的示例代码:
```c++
int binarySearch(int arr[], int n, int x) {
int low = 0, high = n - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == x) {
return mid;
} else if (arr[mid] > x) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
}
```
(3) 二叉排序树查找算法是一种基于二叉排序树的查找算法,具体步骤如下:
1. 根据待查找元素的大小关系,从根节点开始递归查找。
2. 若当前节点为空,则返回-1表示查找失败。
3. 若当前节点的值等于待查找元素,则返回当前节点的值。
4. 若当前节点的值大于待查找元素,则继续递归查找当前节点的左子树。
5. 若当前节点的值小于待查找元素,则继续递归查找当前节点的右子树。
以下是使用C++实现二叉排序树查找的示例代码:
```c++
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
int search(TreeNode* root, int x) {
if (root == NULL) {
return -1;
}
if (root->val == x) {
return root->val;
} else if (root->val > x) {
return search(root->left, x);
} else {
return search(root->right, x);
}
}
```
阅读全文