先用上面的一张图说明逻辑,这就是递归的逻辑。

xy排序就相当于在x的空位插上y,x只有两个空位,y插前面得带yx,y插后面得到xy

xyz排序就相当于在xy排序的所有结果插上z,结果如图

代码实现如下public static void main(String[] args){

List list = sort("xy","k");

for(String s:list){

System.out.println(s);

}

}

public static List sort(String main,String insert){

List result  = new ArrayList<>();

if(main.length() == 1){

result.add(main+insert);

result.add(insert+main);

}else{

List lastResult = sort(main.substring(0,main.length()-1),main.substring(main.length()-1));

for(String s:lastResult){

int insertIndex = 0;

while(insertIndex<=s.length()){

if(insertIndex == 0){

result.add(insert+s);

}else if(insertIndex == s.length()){

result.add(s+insert);

}else{

result.add(s.substring(0, insertIndex)+insert+s.substring(insertIndex, s.length()));

}

insertIndex++;

}

}

}

return result;

};

测试结果是:zxy;xzy;xyz;zyx;yzx;yxz;

另外测试abcd排序结果是:dcab;cdab;cadb;cabd;dacb;adcb;acdb;acbd;dabc;adbc;abdc;abcd;dcba;cdba;cbda;cbad;dbca;bdca;bcda;bcad;dbac;bdac;badc;bacd;

java给xyz大小排序_java递归实现string xyz排序相关推荐

  1. java给xyz大小排序_java实现递归实现string xyz排序

    先用上面的一张图说明逻辑,这就是递归的逻辑. xy排序就相当于在x的空位插上y,x只有两个空位,y插前面得带yx,y插后面得到xy xyz排序就相当于在xy排序的所有结果插上z,结果如图 代码实现如下 ...

  2. java面试排序都考哪几种排序_java算法面试题:排序都有哪几种方法?

    一.冒泡排序 [java] view plain copy package sort.bubble; import java.util.Random; /** * 依次比较相邻的两个数,将小数放在前面 ...

  3. java 怎么自定义排序_Java如何实现List自定义排序

    Java如何实现List自定义排序,自定义,即为,详细内容,相关文章,更多关于 Java如何实现List自定义排序 易采站长站,站长之家为您整理了Java如何实现List自定义排序的相关内容. 实体类 ...

  4. java最全基础知识_Java编程入门,计数排序(Counting Sort)怎么做?

    计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中. 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数. 计数排序(Counting sort)是一种稳定的排 ...

  5. java sort()怎么实现的_Java中Array.sort()的排序原理

    People[]people={newPeople("小飞飞","2","2:41:28"),newPeople("小国" ...

  6. java最全基础知识_Java编程入门,选择排序(Selection Sort)怎么做?

    表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好.唯一的好处可能就是不占用额外的内存空间了吧.理论上讲,选择排序可能也是平时排序一般人想到的 ...

  7. java 姓排序_Java中先按照姓名排序在按照年龄排序 代码

    package cn.Home; import java.util.Arrays; import java.util.Comparator; import org.junit.Test; public ...

  8. java线索二叉树的实现_JAVA递归实现线索化二叉树

    JAVA递归实现线索化二叉树 基础理论 首先,二叉树递归遍历分为先序遍历.中序遍历和后序遍历. 先序遍历为:根节点+左子树+右子树 中序遍历为:左子树+根节点+右子树 后序遍历为:左子树+右子树+根节 ...

  9. java array 元素的位置_java中的两种排序工具Arrays和Collections的使用

    java中的排序工具主要是有两个Arrays和Collections.我们一个一个来讲解. 本来写好了每一种方法的测试代码,后来又给删了,因为我觉得如果想要去了解的话,可以直接查看这些常用的即可.因为 ...

最新文章

  1. shell快速将同一名称的不同类型文件自动划分到一个文件中
  2. sae python连接mysql_SAE Tornado 应用连接并使用 Mysql
  3. 五种常见的 PHP 设计模式
  4. Ethereum 君士坦丁堡安全漏洞对 FOD 的影响
  5. 使用C#格式化字符串 1
  6. python-leepcode-作用解析 - 5-27
  7. Linux系统编程之--守护进程的创建和详解【转】
  8. django中的ajax_post请求
  9. 青岛理工邀请赛(难受的一次经历)之显示屏(按着倍数放大数字)
  10. JSF Tomcat配置示例
  11. 工作215:打印出父子组件的this
  12. npm收录了哪些包_手把手教你制作一个小而美丽的 npm 包并发布
  13. 非递归方式对二叉树进行前序、中序、后序遍历(C++实现)
  14. HDB3码和AMI码通过Matlab实现编码和解码
  15. 戴尔服务器盘安装系统安装win7系统教程,戴尔系统光盘安装win7系统方法
  16. 求长方形和正方形的面积
  17. 入职百度-念念不忘,必有回响
  18. 如何度过人生艰难:魔都28岁硬核知识型美少女自救指南
  19. 邮箱android版,网易邮箱Android版手机通讯录将同步
  20. AVI文件数据流操作

热门文章

  1. CoppeliaSim(原Vrep)中实现多关节机械臂的逆运动学仿真(tar-tip)
  2. 图深度学习:成果、挑战和未来[AI前沿技术]
  3. 序列模型第二周 自然语言处理与词嵌入
  4. GoPro绑在轮胎上拍视频 喊你来看万花筒
  5. (生物信息学)R语言与统计学入门(七)—— 一元线性回归分析
  6. Orbotech Introduces Symbion S36 Post-Reflow AOI System
  7. 【论文阅读 WSDM‘21】PROP: Pre-training with Representative Words Prediction for Ad-hoc Retrieval
  8. 【electron】自制思维导图软件
  9. Culling 渲染剔除
  10. css3宽度变大动画_【HVAC】动画演示流量计的工作原理,真涨见识!