有兩個有序數組,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;
}