java实现归并排序,java中递归怎么实现
递归排列
递归,俗称“我自调”,如果从数据结构的角度理解,其实就是一个栈。
如果我们要求A、B、C的排列,过程大致如下:
(0)初始状态,堆栈中没有数据。此时栈外:A、B、C
(1)在堆栈底部放置一个。此时栈外:B,C
(2)将B放入栈中。此时堆栈溢出:c
(3)将C放入栈中。此时离栈:无,输出第一排列ABC。
(4)从堆栈中删除C。此时堆栈溢出:c
(5)从堆栈中移除B。此时栈外:B,C
(6)将C放入栈中。此时堆栈已满:b
(7)将B放入堆栈。此时,出栈:无,输出第二排列ACB。
之后依次将栈返回到初始状态,然后将B放在栈底,重复动作,即可得到所有排列。
免费视频教程推荐:java视频教程
例子如下:
公开课演示{
公共静态void main(String[] args) {
char buf[]={A , B , C };//定义要排列的数组
perm(buf,0,buf . length-1);
}
public static void perm(char[] buf,int start,int end){
If(start==end){//堆栈结束条件,执行完判断语句后,逐步释放堆栈。
for(int I=0;I=结束;i ){
system . out . print(buf[I]);
}
system . out . println();
}
Else{//递归正常体
for(int I=start;I=结束;I ){//控制推送数据
exchange(buf,start,I);//堆叠操作
perm(buf,start 1,end);//递归,对下一个数据进行栈访问操作。
exchange(buf,start,I);//弹出操作
}
}
}
public static void Exchange(char[]c,int x,int y){//交换数组中的数据,在栈中的表现就是进出栈。
char temp=c[x];
c[x]=c[y];
c[y]=temp;
}
}运行结果:
字母表
框架式断路器
二进制模拟转换(Binary-Analog Conversion)
喹啉甲酸
中国男子篮球职业联赛
本文CAB由java零基础入门专栏推荐。欢迎大家一起学习交流!以上是如何在java中实现递归排列的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。