请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间。
输入格式:
输入给出正整数n(<10)。
输出格式:
输出1到n的全排列。每种排列占一行,数字间无空格。排列的输出顺序为字典序。
输入样例:
3
输出样例:
123
132
213
231
312
321
同样的题目我用系统带的sort降序函数跑就可以,自己写了个降序排列就不行。有人帮忙看看吗。



这是我自己打的代码。把那个Asort换成系统带的sort函数就成功了,自己写的sort跑不出来。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
void Asort(int k,int N);
void Out(int k,int N);
int n[9]={1,2,3,4,5,6,7,8,9};
int main(){
int N;
cin>>N;
Out(0,N);
return 0;
}
void Out(int k,int N){
int t;
if(k==N-1){
for(int i=0;i<N;i++){
printf("%d",n[i]);
}
cout<<"\n";
}else{
for(int i=k;i<N;i++){
t=n[k];n[k]=n[i];n[i]=t;
Out(k+1,N);
Asort(k+1,N);//换成sort(n+k+1,n+N);就可以了
}
}
}
void Asort(int k,int N){
int tem;
for(int i=k;i<N-1;i++){
for(int j=k;j<N-1-i;i++){
if(n[j]>n[j+1]){
tem=n[j];
n[j]=n[j+1];
n[j+1]=tem;
}
}
}
}