C++实现从数组中同时取出最大最小元素算法示例
算法思路
从数组中取最大最小值的算法是比较基础的一种算法,其实现思路也较为简单。本算法的实现思路如下:
- 定义一个变量来存储最大值,首先将其赋值为数组的第一个元素。
- 定义一个变量来存储最小值,首先将其赋值为数组的第一个元素。
- 遍历数组中的每一个元素,当找到一个比当前最大值还大的元素时,将最大值变量的值更新为该元素;当找到一个比当前最小值还小的元素时,将最小值变量的值更新为该元素。
- 遍历结束后,最大值变量和最小值变量的值即为数组中的最大值和最小值。
示例1
下面是一个数组取最大值最小值的简单例子。代码如下:
#include <iostream>
#include <climits>
using namespace std;
int main()
{
int a[] = {2, 5, 7, 13, 12, 8, 0};
int n = sizeof(a) / sizeof(int); // 数组元素个数
int max = INT_MIN, min = INT_MAX; // 初始化最大最小值变量
for(int i = 0; i < n; i++)
{
if(a[i] > max)
{
max = a[i];
}
if(a[i] < min)
{
min = a[i];
}
}
cout << "max = " << max << endl;
cout << "min = " << min << endl;
return 0;
}
上面的代码中,我们使用了climits库中的INT_MAX和INT_MIN两个变量来初始化最大和最小值变量。具体来说,INT_MAX表示int类型的最大值,而INT_MIN表示int类型的最小值。
示例2
我们这里使用快排算法来从数组中取出最大最小值,代码如下:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 快排算法
void quick_sort(vector<int> &nums, int l, int r) {
if (l >= r) return;
int i = l, j = r, x = nums[(l + r) / 2];
while (i <= j) {
while (nums[i] < x) i++;
while (nums[j] > x) j--;
if (i <= j) {
swap(nums[i], nums[j]);
i++;
j--;
}
}
quick_sort(nums, l, j);
quick_sort(nums, i, r);
}
int main()
{
int a[] = {2, 5, 7, 13, 12, 8, 0};
vector<int> nums(a, a + 7);
quick_sort(nums, 0, nums.size() - 1);
cout << "max = " << nums[nums.size() - 1] << endl;
cout << "min = " << nums[0] << endl;
return 0;
}
该示例中,我们先将数组中的元素存储到vector中,然后对这个vector进行快排,最后输出最大值和最小值。
总结
从数组中同时取出最大和最小值是一种比较常见的基础算法,本篇文章介绍了两种不同的取值方法,一种是基于简单的遍历查找法,另一种是基于快排算法。无论选择哪一种方法,都要注意最大最小值变量的初始化问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现从数组中同时取出最大最小元素算法示例 - Python技术站