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

  • 相关阅读:
    PHP安装扩展mcrypt以及相关依赖项 【PHP安装PECL扩展的方法】
    linux设置开机自动启动
    php安装gd库
    php扩展库 说明
    把lighttpd配置为系统服务
    安装mysql5.6
    怎样当一个企业舍不得的人
    JQuery的$(document).ready(function(){})与JS的window.onload 的各自优势!
    JS中Null与Undefined的区别
    JS文本框输入限制
  • 原文地址:https://www.cnblogs.com/flowingwind/p/8443585.html
Copyright © 2011-2022 走看看