谁能告诉我代码的时间复杂度是多少?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谁能告诉我代码的时间复杂度是多少?相关的知识,希望对你有一定的参考价值。

我编写了此代码进行排序,但是我不知道如何计算其时间复杂度,有人可以建议任何好的免费资源来学习时间和空间复杂度。

此算法是否有特定名称?

此代码的时间复杂度可以进一步降低吗?

#include <stdio.h>
int main()

    int n;
    scanf("%d", &n);
    int k = n;
    long long int arr[n];
    for (int i = 0; i < n; i++)
    
        scanf("%lld", &arr[i]);
    
    for (int i = 0; i < k / 2; i++)
    
        for (int j = i + 1; j < n; j++)
        
            if (arr[i] > arr[j])
            
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            
            if (arr[k - i - 1] < arr[k - j - 1])
            
                int temp = arr[k - i - 1];
                arr[k - i - 1] = arr[k - j - 1];
                arr[k - j - 1] = temp;
            
        
        n -= 1;
    
    for (int i = 0; i < k; i++)
    
        printf("%lld\n", arr[i]);
    
    return 0;

如果需要测试用例以检查程序是否正常运行。

58
12
581194376
2751
853533452
17616
427878460
47538707
34068547
5011
5112
6916
6
27906618
4819033
9
77046541
640241561
297401
1383
893104891
7060293
205421670
67037
647449
593742104
5
34
721432
4
31991853
100
40276
2
259407
8
5224731
734333877
4423
133
693532031
1730252
80767
247
6321967
41994328
6
31
9
4991982
17656804
8309
30438533
290097
866649206
37065027
680258388
434
52536369
答案

考虑下面显示的程序的嵌套for循环。

for (int i = 0; i < k / 2; i++)

        for (int j = i + 1; j < n; j++)
        
           //Constant time
        
 

嵌套循环内的操作仅需花费固定时间。外循环执行n / 2次,内循环执行O(n)次。因此,您的代码的复杂度为O(n ^ 2)。

以上是关于谁能告诉我代码的时间复杂度是多少?的主要内容,如果未能解决你的问题,请参考以下文章

堆的算法时间复杂度

有序数组中线性搜索的复杂度分析

下面代码的时间复杂度?

请问谁能告诉我SPFA的算法

Java - 时间复杂度 O(N**2)

给定函数的复杂度是多少[重复]