题目内容:
设计算法找出整数数组a[n](n<=50)中相差最小的两个元素(称为最接近数)的差。
输入格式:
第一行为数组大小n,第二行为n个数组元素,元素之间用空格分开
输出格式:
最接近数的差
输入样例:
5
65 38 26 75 40
输出样例:
2
c++代码
采用一次sort排序后依次求相邻元素之差,时间复杂度为O(nlogn)
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int n;
cin >> n;
int *x = new int[n];
for (int i = 0; i < n; i++)
cin >> x[i];
sort(x, x + n);
int min = x[1] - x[0];
for (int i = 1; i < n-1; i++) {
if (min > x[i + 1] - x[i])
min = x[i + 1] - x[i];
}
cout << min;
return 0;
}