java实现归并排序,java中递归怎么实现

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: