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