算法复杂度

来源:互联网 发布:焦点堆叠软件下载 编辑:程序博客网 时间:2024/06/05 04:19

1. 一次循环

for(int i=0;i<N;i++){   //这里运行次数为N次}
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

2. 二次循环

for(int i=0;i<N;i++){   for(int j=i;j<N;j++)   {     //此处运行次数:N+N-1+N-2+...+1=1+2+3+...+N=N(N+1)/2   }}for(int i=0;i<N;i++){   for(int j=i+1;j<N;j++)   {     //此处运行次数N-1+N-2+N-3+...+1=1+2+3+...+N-1=N(N-1)/2   }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3. 三次循环

for(int i=0;i<N;i++){   for(int j=i;j<N;j++)   {     //此处运行次数N+N-1+N-2+...+1=1+2+3+...+N=N(N+1)/2     for(int k=j;k<N;k++)     {        //此处运行次数:N(N+1)/2+(N-1)*N/2+...+2*3/2+1*2/2=N(N+1)(N+2)/6     }   }}for(int i=0;i<N;i++){   for(int j=i+1;j<N;j++)   {     //此处运行次数N-1+N-2+...+1=1+2+3+...+N-1=N(N-1)/2     for(int k=j;k<N;k++)     {        //此处运行次数:N(N-1)/2+(N-1)*(N-2)/2+...+2*3/2+1*2/2=N(N+1)(N+2)/6-N(N+1)/2=N(N^2-1)/6     }   }}for(int i=0;i<N;i++){   for(int j=i;j<N;j++)   {     //此处运行次数N+N-1+N-2+...+1=1+2+3+...+N=N(N+1)/2     for(int k=j+1;k<N;k++)     {        //此处运行次数:N(N-1)/2+(N-1)*(N-2)/2+...+2*3/2+1*2/2=N(N+1)(N+2)/6-N(N+1)/2=N(N^2-1)/6     }   }}for(int i=0;i<N;i++){   for(int j=i+1;j<N;j++)   {     //此处运行次数N+N-1+N-2+...+1=1+2+3+...+N=N(N-1)/2     for(int k=j+1;k<N;k++)     {        //此处运行次数:(N-1)*(N-2)/2+(N-2)*(N-3)/2+...+2*3/2+1*2/2=N(N+1)(N+2)/6-N(N+1)/2-N(N-1)/2=N(N-1)(N-2)/6     }   }}
原创粉丝点击