zoukankan      html  css  js  c++  java
  • 算法分析课程笔记(一)

    教材:算法设计技巧与分析

    第一课:

    定理:No Free lunch-- For A1, A2, if exist Problem P1, s.t.  A1>A2; then exist Problem P2, s.t. A1<A2

    介绍了三种排序算法(选择排序, 插入排序,合并排序)

    选择排序:

    SELECTIONSORT
    for
    i=1 to n-1 k=i for j=i+1 to n if A[j]<A[k] then k=j end for if k!=i then exchange A[i],A[k] end for

    性能(比较次数和赋值次数):

    比较 n-1+n-2+....+1=(n-1)n/2 (不依赖与输入数组)

    赋值 由于每次交换都是三次赋值,则赋值次数为0~3(n-1)

    插入排序:

    INSERTIONSORT
    for
    i=2 to n j=i-1; A[i]=x;   while(j>0&&A[j]>x)     A[j+1]=A[j];     j=j-1;   end while   A[j+1]=x; end for

    性能(比较次数和赋值次数):

    比较 n-1~n(n-1)/2

    赋值 等于比较次数+n-1

    归并排序:

    t=1;
    while t<n
      s=t; t=2*s; i=0;
       while i+t<=n
           merge(i+1,i+s,i+t);
           i=i+t;
       end while
       if i+s<n  then merge(i+1,i+s,n);
    end while

    性能(比较次数和赋值次数):

    比较 nlogn/2~nlogn-n+1

    赋值 2nlogn

    输入规模与复杂性:

    矩阵加法运算: 因为输入规模是n^2, 计算次数也是n^2,故为线性

    判断素数的程序:

    输入仅为1个数,则以数本身来衡量,在pc上使用bit数衡量,√n=2^(1/2*logn) 故为指数时间的算法

  • 相关阅读:
    chrome远程调试真机上的app
    高性能Cordova App开发学习笔记
    eclipse导入cordova项目
    跨域后模拟器上还是不能显示数据
    跨域请求数据
    eclipse导入cordova创建的项目
    cordova添加platform
    sdk更新代理设置
    NPM安装之后CMD中不能使用
    android开发环境搭建
  • 原文地址:https://www.cnblogs.com/soyscut/p/2943507.html
Copyright © 2011-2022 走看看