Java实现数组的全排列
2016-06-21 23:29
399 查看
今天在做课设任务时间表的时候,算法遇到点问题,有时候有些算法在没有想到的时候可以先用最没效率的方法测试一下,数组的全排列就是其中一种。
public class Test { static String[] array = { "A", "B", "C" }; public static void main(String[] args) { getAllOrder(0, array.length - 1); } public static void getAllOrder(int begin, int end) { if (begin == end) { check(); } else { for (int i = begin; i <= end; i++) { // 交换数据 swap(begin, i); getAllOrder(begin + 1, end); swap(i, begin); } } } public static void swap(int from, int to) { // 这里应该加上各种防止无效交换的情况 // 比如位置相同,或者2个位置的数据相同 if (from == to) { return; } String tmp = array[from]; array[from] = array[to]; array[to] = tmp; } public static void check() { // 排列拿到了,可以进行你的判断了。 System.out.println(Arrays.toString(array)); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树