实现起来有很多方法,下面介绍一个代码最简单的,但理解起来稍微费点劲的算法。。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class FullSort {
//将NUM设置为待排列数组的长度即实现选择排列
private static int NUM = 3;
/**
* 递归算法:将数据分为两部分,递归将数据从左侧移右侧实现选择排列
*
* @param datas
* @param target
*/
private static void sort(List datas, List target) {
if (target.size() == NUM) {
for (Object obj : target)
System.out.print(obj);
System.out.println();
return;
}
for (int i = 0; i < datas.size(); i++) {
List newDatas = new ArrayList(datas);
List newTarget = new ArrayList(target);
newTarget.add(newDatas.get(i));
newDatas.remove(i);
sort(newDatas, newTarget);
}
}
public static void main(String[] args) {
String[] datas = new String[] { "a", "b", "c", "d" };
sort(Arrays.asList(datas), new ArrayList());
}
}
这段代码里面的return用的很厉害,大家自己慢慢体会一下~
下面是全排列的一种算法,也很巧妙简单~
public class AllSort{
public static 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<=end;i++){
System.out.print(buf);
}
System.out.println();
}
else{//多个字母全排列(普遍情况)
for(int i=start;i<=end;i++){//(让指针start分别指向每一个数)
char temp=buf[start];//交换数组第一个元素与后续的元素
buf[start]=buf;
buf=temp;
perm(buf,start+1,end);//后续元素递归全排列
temp=buf[start];//将交换后的数组还原
buf[start]=buf;
buf=temp;
}
}
}
}
分享到:
相关推荐
java算法与编程面试题java算法与编程面试题java算法与编程面试题java算法与编程面试题java算法与编程面试题
常见的java面试题,包括: JAVA面试题集基础篇.pdf JAVA面试题集编程篇.pdf JAVA面试题集高级篇.pdf 就业面试题库(数据库).pdf 数据库.pdf
JAVA经典算法面试39题及答案,算法是不得不看的
算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...
企业面试题 - 算法与编程 此文档包含了算法和算法详解
2022java面试题、JVM面试题、多线程面试题、并发编程、Redis面试题、MySQL面试题、Java2022面试题、Netty面试题、Elasticsearch面试题、Tomcat面试题、Dubbo面试题、Kafka面试题、Linux面试题、2021面试题、java面试...
│ Java面试题80:java访问redis级redis集群?.mp4 │ Java面试题81:微信公众号分类和微信开发原理.mp4 │ Java面试题82:怎么把微信和业务平台进行绑定.mp4 │ Java面试题83:项目的分类和项目参与者.mp4 │ Java...
内含: JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 ...算法面试题 Elasticsearch 面试题 Kafka 面试题 微服务 面试题 Linux面试题
十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA...
以后会慢慢把Java相关的面试题、计算机网络等都加进来,其实这不仅仅是一份面试题,更是一份面试参考,让你熟悉面试题各种提问情况,当然,项目部分,就只能看自己了,毕竟每个人简历、实习、项目等都不一样。面试题...
python编程老师面试题_python面试题五:Python编程
Java 最常见 200+ 面试题全解析:面试必备208题
收集了java的一些面试题,面试总结以及经典算法的java与c的实现,还有关于java基本语法 的经典总结。
本书第1章至第6章分别阐述字符串、数组、树、查找、动态规划、海量数据处理等相关的编程面试题和算法,第7章介绍机器学习的两个算法—K近邻和SVM。 此外,《编程之法:面试和算法心得》每一章都有“举一反三”和...
JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题
2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里...
Java面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdf...
Java就业面试题大全.pdf Java最全的面试题.pdf java面试100题目.pdf SQL面试题大全.pdf 开发面试75条.pdf java 面试题 数据库方面.pdf 如何写出高性能的SQL.pdf 线程编程方面,jsp,jdbc,xml,servlet.pdf 面试题集合....