求兩個有序數組中,各個元素的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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章