美文网首页
算法导论2.3-7

算法导论2.3-7

作者: honeyman | 来源:发表于2015-12-08 20:27 被阅读0次

[算法导论2.3-7]
转自:http://www.cnblogs.com/xuxu8511/archive/2012/08/26/2657685.html
方法1、
先排序,然后比较:

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");

nlgn+n=nlgn,即可以在规定时间内完成。

方法2、
先排序,时间复杂度为:o(nlgn)
S={y,y<x,y∈S},有序数组。
S'={z:z=x-y,y∈S},显然S'也是一个有序数组。
然后,合并S、S’ 数组,如果存在两个连续的相等值,也就是y1,y1,...,y2,y2 且y1+y2 = x,那么集合S中就存在两个数的和为X。
那么,就存在y1+y2 = x,满足条件。
为什么要存在两个连续的相等值呢?
-------因为数是对称的,如果存在y1,使得y1=x-y2,那么也有y2 =x-y1存在。
o(nlgn) +o(n) = o(nlgn)

同样道理,找三个数之和也可以在n2时间内完成。sum=a[i]+b[i]+c[i];等价找两个数其和为s=sum-a[i];共有n个,每个查找为线性时间n;nlgn+n2=n^2。

相关文章

  • 算法导论2.3-7

    [算法导论2.3-7]转自:http://www.cnblogs.com/xuxu8511/archive/201...

  • 数据结构与算法参考书籍

    数据结构与算法分析 算法 算法导论 java编程思想

  • 好文章索引

    算法 《算法导论》快速指南:我是如何10天入门算法导论的。 - 渗透之美 - 知乎专栏 推荐内容索引 - 老赵点滴...

  • 算法导论笔记

    读算法导论 记录一下读算法导论的过程 1.算法 如果问我什么是算法(思考中) 利用数据结构,考虑时间以及空间效率,...

  • 给我巨大影响的技术书籍

    算法《算法概论》《算法设计与分析基础》 Anany Levitin《算法引论》Udi Manber《算法导论》《什...

  • 参考书籍

    《啊哈! 算法》 《算法导论》(原书第三版)

  • C++快速排序(算法),小白必备!拿走不谢!

    <算法导论>上面的算法逻辑 QUICKSORT(A, p, r)//快速排序算法 if (p < r ) { q ...

  • 快排【算法导论】

    注:学习算法导论,按照标准伪代码理解翻译为java实现,如有兴趣理解整个过程的细节,建议阅读《算法导论》第7章:快...

  • 算法导论

    分析 loop-invariant • A technique to prove that an algorith...

  • 《算法导论》

    算法是思维逻辑的抽象,为效率而生。

网友评论

      本文标题:算法导论2.3-7

      本文链接:https://www.haomeiwen.com/subject/ozvehttx.html