经典算法
前言
就算法而言,我们主要学习的是数学+思维+逻辑+数据结构实现功能,所以我们主要学习是思维也是解决问题的思路,然后用逻辑去实现它。
提示:以下是本篇文章正文内容,下面案例可供参考
一、什么全排列?
打印一组由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。