#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> nums;
    int num;
    
    // 输入一串大于零的整数数字以零停止输入
    while (std::cin >> num && num != 0) {
        nums.push_back(num);
    }
    
    // 对数组进行排序
    std::sort(nums.begin(), nums.end());
    
    // 计算相邻两个数的差的最小值
    int minDiff = INT_MAX;
    for (int i = 1; i < nums.size(); i++) {
        int diff = std::abs(nums[i] - nums[i-1]);
        if (diff < minDiff) {
            minDiff = diff;
        }
    }
    
    // 输出最小差值
    std::cout << "最小差值为:" << minDiff << std::endl;
    
    return 0;
}

这个程序首先定义了一个std::vector<int>类型的数组nums,用来存储输入的整数数字。然后通过一个循环,将输入的数字依次插入到数组中,直到输入为0为止。

然后,使用std::sort()函数对数组进行排序,将数组从小到大排列。

接下来,使用一个循环遍历数组,计算相邻两个数的差的绝对值,并将差的最小值保存到minDiff变量中。

最后,输出最小差值。

注意:在这个程序中,我们使用了std::abs()函数来求绝对值,需要包含头文件<cmath>。另外,我们还使用了INT_MAX常量来初始化minDiff变量,需要包含头文件<climits>

基于我们对排序的理解现在我们来尝试计算一个数组中的最小差值。最小差值指的是数组中两两之间做差所得到的最小绝对值例如:2 15 9 20 5这样五个数它们的最小差值就是∣5−2∣=3。计算最小差值有很多种解法我们可以先把数组从小到大排序然后依次计算相邻两个数的差计算它们的最小值就可以了。输入输入一串大于零的整数数字以零停止输入。数组长度小于1000000c++

原文地址: https://www.cveoy.top/t/topic/jad5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录