算法导论2.3.7

利用二分查找的复杂度为logN,所以查找对象为binarySearch(vec,vec[i])做一个循环即可


bool findSum(const vector<int> &vec,vector<int> &result,int v)
{
	vector<int> vec2(vec);
	sort(vec2.begin(),vec2.end());
	int idx;
	int i;
	int flag=0;
	for(i=0;i<vec2.size()-2;i++)
	{
		idx=binarySearch(vec2,v-vec2[i]);
		if(idx!=NIL)
		{
			flag=1;
			break;
		}
	}
	int idx1=linearSearch(vec,vec2[i]);
	int idx2=linearSearch(vec,vec2[idx]);

	result.push_back(idx1);
	result.push_back(idx2);
	if(flag)
		return true;
	else 
		return false;
}

你可能感兴趣的:(算法导论2.3.7)