请给出代码和解释
é¦å 对æ°ç»è¿è¡æåºï¼æ¶é´å¤æ度为ï¼N*log2Nï¼ã
ç¶å令i = 0ï¼j = n-1ï¼çarr[i] + arr[j] æ¯å¦çäºSumï¼å¦ææ¯ï¼åç»æãå¦æå°äºSumï¼åi = i + 1ï¼å¦æ大äºSumï¼å j = j â 1ãè¿æ ·åªéè¦å¨æ好åºçæ°ç»ä¸éåä¸æ¬¡ï¼å°±å¯ä»¥å¾å°æåçç»æï¼æ¶é´å¤æ度为Oï¼Nï¼ã两æ¥å èµ·æ¥æ»çæ¶é´å¤æ度Oï¼N*log2Nï¼ï¼ä¸é¢è¿ä¸ªç¨åºå°±å©ç¨äºè¿ä¸ªææ³ï¼ä»£ç å¦ä¸æ示ï¼
int getSumNum(int[] arr,int Sum)ï¼ //arr为æ°ç»ï¼Sum为å{
int i,j;
for(i = 0, j = n-1; i < j ; )
{
if(arr[i] + arr[j] == Sum)
return ( i , j );
else if(arr[i] + arr[j] < Sum)
i++;
else
j--;
}
return ( -1 , -1 );
}
å®çæ¶é´å¤æ度æ¯Oï¼Nï¼ã
åå¼å§ä¸ç´æ æ³ç解è¿æ ·ä¸å®å¯ä»¥æ¾å°è¿ä¸ªååï¼é¾éä¸ä¼æ¼æäºè§£çä½ç½®ãå¯ä»¥è¿ä¹ç解ï¼åå¦æ好åºåçæ°ç»ä¸º1,3,6,a,9,12,17,28,b,35,46 ,é£ä¹iæåæå1çä½ç½®ï¼jæåæå46çä½ç½®ï¼æ¯å¦ææ±çæ¯Sum=a+bï¼a<bï¼aåbå¨æ°ç»ä¸çæä½ç½®ä¸ãé£ä¹iåjå¨ååè¿ç¨ä¸ï¼åªèèiéå°äºaæè jéå°äºbçæ¶åï¼å¿ å®æä¸ä¸ªå éå°ï¼æ¯å¦iéå°äºaï¼é£ä¹è¿ä¸ªæ¶åjå¿ å®è¿æ²¡æå°bï¼æ è¿æ¶jæå°çå¼æ¯b大ï¼ä»èjåå°ç´å°bä½ç½®ãåçè¥jå æå°äºbä½ç½®ï¼é£ä¹iå¿ å®è¿æ²¡æå°a(è¿æ¯æ们çåæ)ï¼ç¶åiç°å¨æå°çå¼æ¯aå°ï¼æ iå¢å ï¼ç´å°aä½ç½®ã