求数组中元素的最短距离

来源:互联网 发布:php 图文直播系统 编辑:程序博客网 时间:2024/06/11 23:16

题目:给定一个含有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;}