package com.xiayu.sum;
import java.util.Arrays;
import java.util.Comparator;
class numpair{
int num;
int index;
public numpair(int _num, int _index)
{
num = _num;
index = _index;
}
public int getnum(){return num;}
public int getindex(){return index;}
}
class pairComparator implements Comparator<numpair>
{
public int compare(numpair p1, numpair p2)
{
return p1.getnum() - p2.getnum();
}
}
class sumall {
private int mTarget;
private int[] mNumbers;
private numpair[] mPairs;
private int mMax;
private int mMin;
public sumall(int[] numbers, int target){
mNumbers = numbers;
mTarget = target;
}
public void sort(){
mPairs = new numpair[mNumbers.length];
for(int i=0;i<mNumbers.length;i++)
{
mPairs[i] = new numpair(mNumbers[i], i+1);
}
Arrays.sort(mPairs, new pairComparator());
}
int binary_search(int start, int end, int target)
{
while(start <= end)
{
int middle = (start + end)/2;
if(mPairs[middle].getnum() == target)
return middle;
//在左半边
else if(mPairs[middle].getnum() > target)
end = middle - 1;
//在右半边
else
start = middle + 1;
}
//没找到
return -1;
}
int[] compute(){
int target;
int middle;
int[] result = new int[2];
for(int i = 0; i<mPairs.length ;i++){
target = mTarget - mPairs[i].getnum();
middle = binary_search(i+1, mPairs.length-1,target);
if(middle != -1){
result[0] = Math.min(mPairs[i].getindex(), mPairs[middle].getindex());
result[1] = Math.max(mPairs[i].getindex(), mPairs[middle].getindex());
return result;
}
}
return null;
}
}
public class sum {
public static void main(String[] args){
int[] numbers =new int[] {3,2,4};
int [] result;
int target = 6;
sumall a = new sumall(numbers, target);
a.sort();
result = a.compute();
System.out.println(result);
target=9;
}
}