数据结构时间复杂度

Posted almslfniswd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构时间复杂度相关的知识,希望对你有一定的参考价值。

问题引出:

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

假定数列:

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

算法三:

 

算法四:

 线性表:

 

以上是关于数据结构时间复杂度的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的算法复杂度

用于数据加载的 Android 活动/片段职责

代码片段使用复杂的 JavaScript 在 UIWebView 中插入 HTML?

基于时间复杂度的这些片段真的很困惑

PAT 乙级 1049 数列的片段和

PAT1049-----枚举法,找规律题,注意降低时间复杂度