Find array pairs whose sum is a given number
by bob m
HTML
<p id="sum">what's new</p>
<!-- // good answer at https://stackoverflow.com/questions/9656789/find-2-numbers-in-an-unsorted-array-equal-to-a-given-sum -->
JavaScript
function findSumPairs(ary, sum){
ary.sort(function(a,b){ return a - b; });
console.log('SORTED: ' + ary + '; Ary length is: ' + ary.length);
// outer loop goes foward from 0, inner goes backward from len
// if sum of two elements less than sum input, advance first loop
// if sum is greater, advance second loop
var numPairs=0;
for (i=0; i<ary.length; i++){
for (y=ary.length-1; y>0; y--)
{ // we never want i and y to meet
if (i >= y){break;}
if (ary[i] + ary[y] < sum){
// outer+inner less than sum, advance outer
break;
}
if (ary[i] + ary[y] == sum){ // we have a match !
console.log('SUM FOUND i y ' + i +' ' + y +' ' + ary[i] + '+' +ary[y]);
numPairs++;
}
}
}
return numPairs;
}
var myAry=[5,1,7,6,4,9,10,15];
var sum = 10;
var res=findSumPairs(myAry, sum);
document.getElementById("sum").innerHTML = "Sorted array: " + myAry + '; Ary length is: ' + myAry.length + '; numPairs = ' + res;