有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数

论坛 期权论坛 脚本     
已经匿名di用户   2022-7-2 21:58   5324   0

先把数组排序,然后计算相邻的差值,最小的就是需要的

#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;

}


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP