初级算法-排列组合

排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。

组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。排列组合的中心问题是研究给定要求的排列和组合可能出现的情况总数。 

public class MyTest {
	public static void main(String[] args) {
		char[] buf = { '1', '2', '3' };

		perm(buf, 0, buf.length - 1);
	}

	public static void perm(char[] buf, int start, int end) {
		if (start == end) {
				System.out.println(buf);
		} else {
			for (int i = start; i <= end; i++) {
				if(isSwap(buf,start,i)){
					swap(buf, start, i);
					perm(buf, start + 1, end);
					swap(buf, start, i);
				}
			}
		}
	}
	
	public static boolean isSwap(char[] buf,int start,int end){
		
		for(int i=start;i<end;i++){
			if(buf[i]==buf[end])
				return false;
		}
		return true;
	}
	
	public static void swap(char[] buf,int i,int j){
		char temp=buf[i];
		buf[i]=buf[j];
		buf[j]=temp;
	}
}


你可能感兴趣的:(初级算法-排列组合)