有一个整数数组,请求出两两之差绝对值最小的值

来源:互联网 发布:手机提示网络错误 编辑:程序博客网 时间:2024/05/29 16:47
这个题目其实和那个左边减去右边的差最大那个题目类似,只是这里要多加几个判断,代码如下:
[html] view plaincopy
  1. // maxAndmin.cpp : 定义控制台应用程序的入口点。  
  2. //  
  3.   
  4. #include "stdafx.h"  
  5. #include <iostream>  
  6. #include <cmath>  
  7. using namespace std;  
  8.   
  9. int getMax(int a[],int len)  
  10. {  
  11.     int max=a[0];  
  12.     int maxDiff=0;  
  13.     int diff=a[0]-a[1];  
  14.     for (int i=2;i<len;i++)  
  15.     {  
  16.         if (a[i-1]>max)  
  17.         {  
  18.             max=a[i-1];  
  19.         }  
  20.         diff=max-a[i];  
  21.         if (diff>maxDiff)  
  22.         {  
  23.             maxDiff=diff;  
  24.         }  
  25.           
  26.     }  
  27.     return maxDiff;  
  28. }  
  29.   
  30. int getMin(int a[],int len)  
  31. {  
  32.     int min=a[0];  
  33.     int diff=a[0]-a[1];  
  34.     if(diff<0)  
  35.     {  
  36.         diff=-diff;  
  37.     }  
  38.     int minDiff=diff;  
  39.     for (int i=2;i<len;i++)  
  40.     {  
  41.         if (a[i-1]<abs(min))  
  42.         {  
  43.             min=a[i-1];  
  44.         }  
  45.         diff=min-a[i];  
  46.         if (diff<0)  
  47.         {  
  48.             diff=-diff;  
  49.         }  
  50.         if (diff<minDiff)  
  51.         {  
  52.             minDiff=diff;  
  53.         }  
  54.     }  
  55.     return minDiff;  
  56. }  
  57.   
  58.   
  59. int _tmain(int argc, _TCHAR* argv[])  
  60. {  
  61.     int a[]={-5,-1,11,6,-2};  
  62.     int len=sizeof(a)/sizeof(int);  
  63.     cout<<getMin(a,len);  
  64.   
  65.     system("pause");  
  66.     return 0;  
  67. }  


 

0 0