// 先对数组进行排序
arr = quickSort(arr, 0, arr.length - 1);
// 然后两边夹逼,进行查找
String findRet = find(arr, 82);
if (findRet == null)
{
System.out.println("not found");
}
else
{
System.out.println(findRet);
}
}
/**
* 传入一个数组和一个sum值,查找在该数组中是否存在两个数的和为sum
*
* @param arr 待查找数组
* @param sum 待查找的和
* @return 返回字符串形式,为相加的两个数,如果没有找到,返回null
*/
public static String find(int[] arr, long sum)
{
int start = 0;
int end = arr.length - 1;
int tempSum = 0;
while (true)
{
tempSum = arr[start] + arr[end];
if (arr[start] + arr[end] == sum)
{
return String.valueOf(arr[start] + " + " + arr[end]);
}
else
{
if (end - start == 1)
{
return null;
}
else
{
if (tempSum > sum)
{
end--;
}
else if (tempSum < sum)
{
start++;
}
}
}
}
}
/**
* 快速排序算法
*
* @param arr 待排序数组
* @param startIndex 起始下标
* @param endIndex 结束下标
* @return 排序好的数组
*/
public static int[] quickSort(int[] arr, int start, int end)
{
}
}