面试题28:全排列(java)

来源:互联网 发布:大数据用户行为分析 编辑:程序博客网 时间:2024/06/14 01:28
package _28_permutation_combine;import java.util.Arrays;/** * 全排列 * @author root * */public class Permutation {public static void main(String[] args) {//int[] array = new int[] { 1, 2, 3};int[] array = new int[] { 1, 1, 1};permute1(array, 0);}/* * 不存在重复字符的 */public static void permute(int a[], int k) {if (k == a.length) {System.out.println(Arrays.toString(a));} elsefor (int i = k; i < a.length; ++i) {swap(a, k, i);permute(a, k + 1);swap(a, k, i);}}/* * 存在重复字符的 */public static void permute1(int a[], int k) {if (k == a.length) {System.out.println(Arrays.toString(a));} elsefor (int i = k; i < a.length; ++i) {if(i==k || a[i]!=a[k]){swap(a, k, i);permute1(a, k + 1);swap(a, k, i);}}}private static void swap(int[] a, int s, int i) {int t = a[s];a[s] = a[i];a[i] = t;}}

0 0
原创粉丝点击