
算法思想

算法实现

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