【发布时间】:2021-08-22 17:48:48
【问题描述】:
二分查找的想法在排序数组的情况下非常有效。我们可以对A[]和每个值进行排序A[i],搜索数组中是否存在另一个值K-A[i] K-A[i]。二分搜索在O(logn) 中执行搜索,这可以帮助我们提高时间复杂度。
解决步骤
对数组A[]进行升序排序
对于每个元素A[i],使用二分搜索查找K-A[i]。
如果数组 A 中存在值K-A[i],则返回 true。
如果在整个数组中没有找到这样的一对 ,则返回 false。
伪代码 '''
int find_sumPair (A[], n, K)
{
Sort ( A, n)
for( i = 0 to n-1 )
{
x = binarySearch ( A, 0, n-1, K-A[i] )
if ( x )
return 1
}
return -1
}
'''
这个伪代码只用于一个数组,如果我想检查两个未排序数组中的对,给定总和,伪代码的复杂度时间应该是 O(nlogn)??
【问题讨论】:
标签: arrays algorithm sorting binary-search pseudocode