求两个有序数组中,各个元素的c差值最小

有两个有序数组,float a[]={1.5,2,4,4.1,7},b[]={-1.5,1,2.3,3.9,7.0};求两个数组元素彼此之间的绝对值中最小的一个数,即数组的距离。

#include<stdio.h>
#include<math.h>
//法一
void mindist(float a[],int n,float b[],int m)
{
	int a_index=0,b_index=0;
	float min=10000;
	float temp;
	while(a_index<n && b_index<m)
	{
		while(b_index<m)
		{
			if((temp=fabs(a[a_index]-b[b_index]))<min)
			{
				min=temp;
				b_index++;
			}
			else 
				break;
		}
		a_index++;
	}
	printf("the mindist is %.2f\n",min);
}
//法二:
int  min_distance(int x[],int n, int y[],  int m)
{
     int  minimum = INT_MAX;  /* INT_MAX is from limits.h */
     int  index_x = 0, index_y = 0;

     while (index_x < n && index_y < m)
          if (x[index_x] >= y[index_y]) {
               minimum = min(minimum, x[index_x]-y[index_y]);
               index_y++;
          }
          else {
               minimum = min(minimum, y[index_y]-x[index_x]);
               index_x++;
          }
     return minimum;
}

int main()
{
	//求2个数组中元素的最短距离
	float a[]={1.5,2,4,4.1,7},b[]={-1.5,1,2.3,3.9,7.0};
	mindist(a,sizeof(a)/sizeof(int),b,sizeof(b)/sizeof(int));
	return 0;
}
发布了27 篇原创文章 · 获赞 11 · 访问量 10万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章