zoukankan      html  css  js  c++  java
  • 数据结构时间复杂度

    问题引出:

    编程找出指定数列的所有子列和的最大值;

    假定数列:

    int arry[16] = {5, -6, 4, -5, 3, 1, 2, -4, 8, -9, 3, 1, -7, 6, 4, -1};
     
    算法一:
    #include <iostream>
    using namespace std;
    int main()
    {
        const int N = 16;
        int arry[N] = {5, -6, 4, -5, 3, 1, 2, -4, 8, -9, 3, 1, -7, 6, 4, -1};
        int maxsum = 0;
        
        for (int k = 0; k < N; k++)
        {
            for (int j = k; j < N; j++)
            {
                int tempsum = 0;
                for (int i = k; i <= j; i++)
                {
                    tempsum += arry[i];  
                }
                maxsum = tempsum > maxsum ? tempsum : maxsum;
            }
        }
        cout << maxsum << endl;
        return 0;
    }

    例用三个循环:其时间复杂度T(N) = O(N3);

    算法二:

    #include <iostream>
    using namespace std;
    int main()
    {
        const int N = 16;
        int arry[N] = {5, -6, 4, -5, 3, 1, 2, -4, 8, -9, 3, 1, -7, 6, 4, -1};
        int maxsum = 0;
        
        for (int k = 0; k < N; k++)
        {
            int tempsum = 0;
            for (int j = k; j < N; j++)
            {
                tempsum += arry[j];    
                maxsum = tempsum > maxsum ? tempsum : maxsum;
            }
        }
        cout << maxsum << endl;
        return 0;
    }

    例用两个循环:其时间复杂度T(N) = O(N2);

    算法三:

    #include <iostream>
    using namespace std;
    int main()
    {
        const int N = 15;
        int arry[N] = {5, -6, 4, 5, 3, 1, 2, -4, 8, -9, 3, 1, -7, 6, -4};
        int maxsum = 0;
        int tempsum = 0;
        for (int k = 0; k < N; k++)
        {
            tempsum += arry[k];
            if (tempsum < 0)
            {
                tempsum = 0;
            }
            else
            {
                maxsum = maxsum > tempsum ? maxsum : tempsum;
            }
            
        }
        cout << maxsum << endl;
        return 0;
    }

    例用一个循环:其时间复杂度T(N) = O(N);

  • 相关阅读:
    洛谷 P1195 口袋的天空
    洛谷 P3144 [USACO16OPEN]关闭农场Closing the Farm_Silver
    Bzoj3277 串
    Bzoj1312 / POJ3155 Neerc2006 Hard Life
    Bzoj2655 calc
    51Nod 1228 序列求和
    洛谷P2901 [USACO08MAR]牛慢跑Cow Jogging
    Bzoj1042 [HAOI2008]硬币购物
    Bzoj3884 上帝与集合的正确用法
    Bzoj4161 Shlw loves matrixI
  • 原文地址:https://www.cnblogs.com/flowingwind/p/8443585.html
Copyright © 2011-2022 走看看