/**
* 两个任意值整数列 ,交换元素使两个数列的和相差最小
* @author tt
*
*/
public class TwoArrayTotalLeast {
static int[] first = {1,3,4,89,32,234,42,12,34,34,123,443,55,66};
static int[] second = {1,3,4,89,76,87,34,12,24,64,93,393,59,89};
static void sort(){
int[] max = null;
int[] min = null;
int sum1 =0;
int sum2 = 0;
for(int t : first){sum1 += t;}
for(int t : second){sum2 += t;}
if(sum1 < sum2){
min = first;
max= second;
}else{
max = first;
min = second;
}
while(true){
boolean change = false;
sum1=0;sum2=0;
for(int t : max){sum1 += t;}
for(int t : min){sum2 += t;}
int sub = (sum1-sum2)/2;
if(sub==0) break;
int temp = -1;
int tempi = -1;
int tempj = -1;
for(int i=0;i<max.length;i++){
for(int j=0;j<min.length ;j++){
if(max[i] > min[j] && (max[i] - min[j] <= sub) && (max[i] - min[j] > temp)){
temp = max[i] - min[j];
tempi = i;
tempj = j;
change = true;
}
}
}
if(change){
int t = max[tempi];
max[tempi] = min[tempj];
min[tempj] = t;
}else break;
}
}
public static void main(String[] args) {
System.out.println(sum(first));
System.out.println(sum(second));
sort();
System.out.println(sum(first));
System.out.println(sum(second));
}
public static int sum(int[] temp){
int result = 0;
for(int i : temp){
result += i;
}
return result;
}
}