经典算法之全排列

经典算法


前言

就算法而言,我们主要学习的是数学+思维+逻辑+数据结构实现功能,所以我们主要学习是思维也是解决问题的思路,然后用逻辑去实现它。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么全排列?

打印一组由1,2,3,4,5组成的数,满足带有(1,2,3,4,5)这个结构的数据,使用全排列的算法实现。
让然个数都可以调整的,123456789这样都可以,改一改就可实现。

二、代码实现

public class 全排列 {
    public static void main(String[] args) {
        int i = paiLie();
        System.out.println(i);
    }
    public static int paiLie(){
        int jishuqi=0;
        //打印由12345--->54321之间的数
           for(int num=12345;num<=54321;num++){
               //创建一个方法传入值
               boolean fun = fun(num);
               //判断是不是,如果是就返回true,不是就是false
               if(fun==true){
                   System.out.println(num);
                   //计数器加一,记录个数
                    jishuqi++;
               }
           }
           return jishuqi;
    }

    private static boolean fun(int num) {
        //思路首先将int ----》转为String ------》char[]
        //定义一个字符串
        char[] c={'1','2','3','4','5'};
        //将int转成String类型
        String s = String.valueOf(num);
        //将String转成char[]数组
        char[] chars = s.toCharArray();
        //对chars数组进行升序排列
        Arrays.sort(chars);
        //对c数组,和chars数组进行比较,结果为boolean类型
        boolean equals = Arrays.equals(c, chars);
        return equals;
    }

}

效果截图:打印由12345—>54321之间的数,120个
在这里插入图片描述


总结

实现逻辑:传入一个数值,思路首先将int ----》转为String ------》char[],将int转成String类型,将String转成char[]数组,对chars数组进行升序排列(这里用到的是数据工具类的排序方法,当然你也可以自己写个排序方法),对两个数组进行比较,是的话就返回true。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰太狼RD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值