美文网首页
全排序的递归算法

全排序的递归算法

作者: 拉丁看雪 | 来源:发表于2016-08-15 11:56 被阅读0次

转自 博客地址

算法把列表分为两个列表,然后递归地把左边列表的项移到右边列表
初次使用Markdown,排版十分猥琐,请求原谅= .=

    import java.util.*;
    public class Test{

    private static int NUM = 3;
    static List<List<String>> finalResult=new ArrayList();

    static void print(List l){
        for(Object s:l){
            System.out.print(s);
        }
    }
    
    private static void sort(List datas, List target) {
        if (target.size() == NUM) {
            finalResult.add(target);
            System.out.println();
            return;
        }
        for (int i = 0; i < datas.size(); i++) {
            List newDatas = new ArrayList(datas);   //注意这里是创建了两个新的List,原来的List将不会被操作修改
            List newTarget = new ArrayList(target);
            newTarget.add(newDatas.get(i));
            newDatas.remove(i);
            print(datas);   //这两个print的作用是辅助理解递归过程
            System.out.print("  ");
            print(target);
            System.out.println();
            sort(newDatas, newTarget);
        }
    }

    public static void main(String[] args) {
        String[] datas = new String[] { "a", "b", "c", "d" };
        sort(Arrays.asList(datas), new ArrayList());
        System.out.println("the Final Result:");
        Iterator<List<String>> i=finalResult.iterator();
        while(i.hasNext()){
            System.out.println(i.next());
        }
    }
}

</code>
省略了过程输出,最终结果输出如下:

the Final Result:
[a, b, c] [a, b, d] [a, c, b] [a, c, d] [a, d, b]
[a, d, c] [b, a, c] [b, a, d] [b, c, a] [b, c, d]
[b, d, a] [b, d, c] [c, a, b] [c, a, d] [c, b, a]
[c, b, d] [c, d, a] [c, d, b] [d, a, b] [d, a, c]
[d, b, a] [d, b, c] [d, c, a] [d, c, b]

相关文章

  • 三大排序算法

    归并排序[稳定的排序算法] 递归实现 非递归实现 快速排序[不稳定的排序算法] 堆排序[不稳定的排序算法]

  • 全排序的递归算法

    转自 博客地址 算法把列表分为两个列表,然后递归地把左边列表的项移到右边列表初次使用Markdown,排版十分猥琐...

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

  • 常见算法

    OC整理递归和排序算法

  • 一、算法

    目标 递归算法查找算法算法分析十大排序算法 递归算法 什么是递归递归,在数学与计算机科学中,是指在函数的定义中使用...

  • 算法汇总

    关于算法: 基础技巧:分治、二分、贪心排序算法:快速排序、归并排序、计数排序搜索算法:回溯、递归、深度优先遍历,广...

  • 算法与数据结构简介

    0x01 算法 基础技巧:分治、二分、贪心 排序算法:快速排序、归并排序、计数排序 搜索算法:回溯、递归、深度优先...

  • 2020-11-14

    关于算法 一、选择排序(递归) 选择排序:每次找到最小值放到最前面 注:所有递归都能改成循环 选择排序(循环) 二...

  • 2020前端面试(数据结构)

    常见排序算法 冒泡排序 快速排序 选择排序 插入排序 数组扁平化 递归 reduce toString 树的遍历 ...

  • python笔试面试项目实战2020百练6归并排序快速排序

    归并排序 现在,我们将注意⼒转向使⽤分治策略改进排序算法。要研究的第⼀个算法是归并排序 ,它是递归算法,每次将⼀个...

网友评论

      本文标题:全排序的递归算法

      本文链接:https://www.haomeiwen.com/subject/xsdusttx.html