
算法思想

算法实现

#define INT_MAX 0x7fffffff
int abs(int a){
if(a<0) return -a;
else return a;
}
bool isMin(int a,int b,int c){
if(a<=b&&a<=c) return true;
return false;
}
int findMin(int A[],int a_len,int B[],int b_len,int C[],int c_len) {
int i = 0, j = 0, k = 0, D_min = INT_MAX, D;
while(i < a_len && j < b_len && k < c_len){
D = abs_(A [i] -B [j]) + abs_(B [j] -C [k]) +abs_(C[k] -A[i]);
if(D < D_min) D_min=D;
if (isMin(A[i] ,B[j],C[k])) i++;
else if(isMin(B[j],C[k],A[i])) j++;
else k++;
)
return D_min;
}
算法实现2(三层for循环枚举比较找到最小值)
- 这种算法时间复杂度为O(n³),空间复杂度为O(1)
int abs(int a){
if(a<0) return -a;
else return a;
}
int findMin(int A[],int a_len,int B[],int b_len,int C[],int c_len) {
int D_min = INT_MAX;
int D;
for(int i = 0; i < a_len ;i++){
for(int j = 0; j < b_len ;j++){
for(int k = 0; k < c_len ;k++){
D = abs_(A [i] -B [j]) + abs_(B [j] -C [k]) +abs_(C[k] -A[i]);
if(D_min > D){
D_min = D;
}
}
}
}
return D_min;
}