分析:对数组先进行排序,时间复杂度为nlogn,然后用两个指针,一个begin,另一个end。前者不断增加,后者不断减少,在这个过程中比较,时间复杂度为n,则平均时间复杂度为nlongn。
public static void findSum(int[] a, int sum) {
Arrays.sort(a);
int begin = 0;
int end = a.length - 1;
while (begin < end) {
if (a[begin] + a[end] < sum) {//小于sum就begin++
begin++;
} else if (a[begin] + a[end] > sum) {//大于sum就end--
end--;
} else{//如果等于sum则begin++ end--
System.out.println(a[begin] + "," + a[end]);
begin++;
end--;
}
}
}