我的笔记本运行这段程序:
0 ——9共十个数 :0.137s
0——10共十一个数:1.544s
0——11共十二个数:16.952s
#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#include<math.h>
#include<algorithm>
#include<ctime>
using namespace std;
#define INF 0x3f3f3f3f
#define lson 2*i
#define rson 2*i+1
#define LS l,mid,lson
#define RS mid+1,r,rson
#define UP(i,x,y) for(i=x;i<=y;i++)
#define DOWN(i,x,y) for(i=x;i>=y;i--)
#define MEM(a,x) memset(a,x,sizeof(a))
#define W(a) while(a)
#define gcd(a,b) __gcd(a,b)
#define ll long long
#define INF 0x3f3f3f3f
#define EXP 1e-8
#define lowbit(x) (x&-x)
#define Swap(a,b){int temp =a;a=b;b=temp;}
int dat[] = { 1,2,3,4,5,6,8,9,10,32,15,18,32 };
int num = 0;
const int maxn = 1e5;
void Prem(int begin, int end)
{
int i;
if (begin == end)
num++;
else {
for (i = begin; i <= end; i++)
{
Swap(dat[begin], dat[i]);
Prem(begin + 1, end);
Swap(dat[begin], dat[i]);
}
}
}
int main()
{
clock_t start, end;
start = clock();
Prem(0, 9);
end = clock();
cout << (double)(end - start) / CLOCKS_PER_SEC << endl;
return 0;
}
本文通过一个C++程序展示了递归交换数组元素的过程,随着元素数量增加,运行时间显著增长,揭示了其高时间复杂度。程序中定义了一个Prem函数,用于在数组内递归地交换元素,并在main函数中计算了交换0-9、0-10、0-11个元素所需的时间,分别为0.137s、1.544s和16.952s,强调了递归操作在大规模数据时的效率问题。
1959

被折叠的 条评论
为什么被折叠?



