首页 > 其他 > 详细

数据结构时间复杂度

时间:2018-02-12 10:58:40      阅读:208      评论:0      收藏:0      [点我收藏+]

问题引出:

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

假定数列:

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

算法三:

 

算法四:

 线性表:

 

数据结构时间复杂度

原文:https://www.cnblogs.com/flowingwind/p/8443585.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!