C++实现从数组中同时取出最大最小元素算法示例

C++实现从数组中同时取出最大最小元素算法示例

算法思路

从数组中取最大最小值的算法是比较基础的一种算法,其实现思路也较为简单。本算法的实现思路如下:

  1. 定义一个变量来存储最大值,首先将其赋值为数组的第一个元素。
  2. 定义一个变量来存储最小值,首先将其赋值为数组的第一个元素。
  3. 遍历数组中的每一个元素,当找到一个比当前最大值还大的元素时,将最大值变量的值更新为该元素;当找到一个比当前最小值还小的元素时,将最小值变量的值更新为该元素。
  4. 遍历结束后,最大值变量和最小值变量的值即为数组中的最大值和最小值。

示例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技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C语言利用sprintf固定字符串输出位数

    C语言中常用的输出函数是printf,该函数可以输出各种类型的数据,但是无法固定输出的长度。如果想要输出固定长度的字符串,可以使用sprintf函数。本文将详细讲解sprintf固定字符串输出位数的攻略。 sprintf函数概述 sprintf是C语言中的输出函数,其原型为: int sprintf(char *str, const char *format…

    C 2023年5月22日
    00
  • Golang 如何解析和生成json

    下面是关于 “Golang 如何解析和生成json” 的完整攻略。 什么是json 首先,我们需要了解什么是JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript语法,可以被多种编程语言所支持。在Golang中,需要使用标准库中的encoding/json包来解析和生成JSON格式的数…

    C 2023年5月23日
    00
  • python 内置函数-range()+zip()+sorted()+map()+reduce()+filter()

    Python内置函数是Python语言的一个基础组成部分,它可以帮助程序员简化代码编写流程。在本文中,我们将会讲解Python内置函数中的 range()、zip()、sorted()、map()、reduce() 和 filter() 函数,以及如何使用它们。 1. range() range() 函数是Python内置的生成连续整数的函数。range(s…

    C 2023年5月22日
    00
  • 三星SLC410W打印机怎么清除纸盘中卡纸?

    清除三星SLC410W打印机纸盘卡纸,可以按照以下步骤进行操作: Step 1:确认纸盘是否卡纸 首先,需要确认打印机是否确实存在纸张卡纸的情况,可以通过以下方式进行判断: 打开打印机的纸盘抽屉,检查是否有纸张卡在了进纸口或者出纸口。 检查打印机的显示屏是否显示有卡纸的提示信息。 检查打印机是否出现异常的声音或者闪烁的LED灯。 如果以上任何一种情况出现,就…

    C 2023年5月23日
    00
  • Go语言中JSON文件的读写操作

    让我为你详细讲解Go语言中JSON文件的读写操作的完整攻略。 什么是JSON? JSON(JavaScript Object Notation),是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。JSON与XML的区别,它是纯文本,更容易阅读,而且数据结构也很简单。在Web开发中,JSON数据是一种非常常见的数据格式。 Go语言中JS…

    C 2023年5月23日
    00
  • C语言Make命令用法讲解

    C语言Make命令用法讲解 简介 Make命令是一种构建工具,可以用来自动化执行多个编译步骤,从而生成可执行文件,库文件等。在C语言编程中,Make命令可用于自动化编译操作,减少开发者的工作量,提高程序的可维护性。 安装 Make命令在GNU编译器套件(GCC)中自带,因此大多数Linux、Unix系统中已经预安装了Make。在Windows操作系统中,可以…

    C 2023年5月22日
    00
  • C语言实现直方图均衡化

    下面是“C语言实现直方图均衡化”的完整攻略: 1.什么是直方图均衡化? 直方图均衡化是一种针对图像处理和计算机视觉中的技术,其主要目的是提高图像对比度和亮度的可读性。它的基本思想是使像素值分布更加均匀,从而达到增强图像对比度和亮度的效果。 2.实现步骤 计算图像的直方图。 直方图是指图像中每个像素值出现的次数。首先需要将图像转换为灰度图像,然后统计每个像素值…

    C 2023年5月23日
    00
  • C++ win系统如何用MinGW编译Boost库

    C++ Win系统如何用MinGW编译Boost库 Boost库是一个开源的、高质量的库,包括许多各种各样的工具和库,被广泛应用于C++编程中。MinGW是一个基于GNU编译器的Windows程序开发工具包,提供了一个完整的开发环境,可用于开发Windows应用程序。本攻略介绍如何使用MinGW编译Boost库。 准备工作 1.下载和安装MinGW可以从Mi…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部