zoukankan      html  css  js  c++  java
  • 算法导论2.37

    Q:

    请给出一个运行时间为θ(nlgn)的算法,使之能在一个由n个整数构成的集合S和另一个整数X时,判断出S中是否存在有两个其和等于X的元素。

    A:

    先对S[1 TO N]进行合并排序--------------------------------θ(nlgn)

    FOR a <- [1 TO N-1]-------------------------------------n-1

           用二分法试图找到b(最坏情况时),使得b+a==x---------θ(nlgn)

    所以:

          T(n)=θ(nlgn)

    时间复杂度小结:

    注意,下面函数图像差别是在n很大时,虽然下面n的范围是0-10,但其实这里省去了实际过程中的 c1nlgn与c2n^2的c1和c2,所以差别如此显著

    最坏情况下,插入排序与合并排序的对比:

    image

    注:高的一条是n^2

    image 

    最好情况下,插入排序时间复杂度θ(n),合并排序时间复杂度θ(nlgn)

    image

    注:高的一条为nlgn

    image

    另:

    插入排序,选择排序:θ(n^2)

    合并排序:θ(nlgn)

    二分查找:θ(lgn)

  • 相关阅读:
    .hpp文件
    最小高度的BST
    检查图中的有向路径
    c++ 对象内存布局详解
    链表求差
    offer--链表反转和从尾到头打印链表
    平衡二叉树的判断
    java 抽象类和接口
    原型模式--prototype
    装饰模式decorator
  • 原文地址:https://www.cnblogs.com/jiangzhen/p/1727860.html
Copyright © 2011-2022 走看看