全排列算法--一种非递归算法的实现

来源:互联网 发布:ubuntu cuda caffe 编辑:程序博客网 时间:2024/06/11 07:36

代码如下:

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);}
非递归算法,有待改进。。。

0 0
原创粉丝点击