首页 > 代码库 > 算法导论 2.3-7
算法导论 2.3-7
问题:给定n个整数的集合S和另一个整数X,描述一个运行时间为O(log N)的算法,该算法能够确定S中是否存在两个其和刚好为X的元素
算法描述:
1、先将集合中元素排序在数组A中
2、对于集合中的每一个元素A[i],在排好序的数组A中二分查找 X-A[i]
3、查找成功则存在,循环结束后查找未成功则不存在
伪代码:
1 Sort( A )2 n = A.length3 for i = 1 to n4 ans = BinarySearch( A, X-A[i], 1, n )5 if ans != NotFound6 return true7 return false
算法复杂度分析:
T(N) = log 1 + log 2 + log3 +....+logN = log ( N! ) = log ( sqrt(2*PI*N)* ( N/e ) ^N ) = O( N log N )
复杂度为O(logN)
算法导论 2.3-7
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。