题目描述:
最近,小L遇到了一道难题,请你帮帮他。
给出n个数,请找出这个序列的任意两个不同的数第二小的差值。ai和 aj的差值定义为∣ai−aj∣,即两个数差的绝对值,其中i和j互不相同。(第二小即从小到大排序之后的第二个数字)
输入格式:
第一行为一个正整数n (3≤n≤105),代表数组的长度。
接下来一行,共n个整数ai(−109≤ai≤109)。
输出格式:
输出一个数字,表示这个序列的任意两个不同的数中第二小的差值。
样例1:
样例输入:
6
11 4 7 1 16 2
样例输出:
2
样例2:
样例输入:
6
10 1 2 4 15 6
样例输出:
2
样例3:
样例输入:
6
6 8 10 4 3 2
样例输出:
1
代码:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n];
int i,j;
int x=0;
int b[100];
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
for(i=0; i<n; i++)
{
for(j=i+1; j<n; j++)
{
b[x]=fabs(a[j]-a[i]);
x++;
}
}
for(i=0; i<x; i++)
{
int d;
for(j=i+1; j<x; j++)
if(b[i]>b[j])
{
d=b[i];
b[i]=b[j];
b[j]=d;
}
}
printf("%d",b[1]);
return 0;
}