题目:给定一个含有n个元素的数组,找出数组中的两个元素X和Y使得abs(x-y)最小
解题思路:先排序,然后遍历元素。
#include<iostream>
//#include<cmath>
#include<limits>
using namespace std;
/* author:chhuaj
date:2013.9.13
description:给定一个含有n个元素的数组,找出数组中的两个元素X和Y使得abs(x-y)最小
*/
//决定升序排序关系
int compare(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int num[10]={7,1,9,5,13,21,20,11,3,15};
qsort(num,10,sizeof(int),compare);
int dis = numeric_limits<int>::max(); //设置dis为int型最大值
int x,y;
for(int i=1;i<10;i++)
{
if(num[i]-num[i-1]<dis)
{
dis = num[i]-num[i-1];
x=i-1;
y=i;
}
}
cout<<x<<","<<y<<","<<dis<<endl;
return 0;
}