代码如下:
void reverse(char *arr,int start,int end){
while(start<end){
char temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;
start++,end--;
}
}
void swap(char *arr,int i,int j){
char temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
void nextPermutation(char *arr,int length){
int pA,pB;
pA=pB=length-1;
while(pA>0){
if(arr[pA]>arr[pA-1])
break;
pA--;
}
pA-=1;
while(pB>=0){
if(arr[pB]>arr[pA])
break;
pB--;
}
swap(arr,pA,pB);
reverse(arr,pA+1,length-1);
printf("%s ",arr);
}
非递归算法,有待改进。。。