习题2.3-7
请给出一个运行时间为Θ(nlgn)的算法,使之能在给定的一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。
一种非递归思想:先将n个整数构成的集合S排序,然后将当前最大跟最小元素的和跟x进行比较;
int i=0,j=n-1;
int b=0;
while (i<j)
{
int k=s[i]+s[j];
if (k==x) b=1,break;
else if (k<x) i++;
else j--;
}
if (b) printf("Y\n");
else printf("N\n");