先把数组排序,然后计算相邻的差值,最小的就是需要的
#include<iostream.h>
#include<string.h>
#include<math.h>
void quick(int a[],int m,int n)
{
if(m<n)
{
int tmp=a[m],i=m,j=n,k=m;
while(i!=j)
{
while(tmp<=a[j]&&i<j)//从右边向左边扫描
j--;
while(tmp>=a[i]&&i<j)//从左边向右边扫描
i++;
if(i<j) //交换比较不符合条件两个数
{
int t;
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[m]=a[i];//将基准数放到i和j相遇的位置
a[i]=tmp;
quick(a,m,i-1);
quick(a,i+1,n);
}
}
void main()
{
int a[10]={10,4,-3,0,14,8,1,23,5,3};
int len=sizeof(a)/sizeof(int),i,min=999999999;
quick(a,0,len-1);//对数组进行快速排序
for(i=1;i<len;i++)
{
if(abs((a[i]-a[i-1]))<min)
min=abs(a[i]-a[i-1]);
}
cout<<min<<endl;
}
|