求给定排列的下一个排列

package com.algorithm.odd;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class PermuteTest {
	public boolean isTarget;
	public void permute(List list,List target,int begin,int end){
		if(begin>end){
			if(isTarget){ 
				System.out.println(list);
				isTarget=false;
				return;
			}
			if(list.equals(target)){
				isTarget=true;
			}
			
		}else{
			for(int i=begin;i<=end;i++){
				Collections.swap(list, i, begin);
				permute(list,target,++begin,end);
				Collections.swap(list, --begin, i);
			}
		}
	}
	public static void main(String[] args){
		List list=new ArrayList(Arrays.asList(1,2,3,4,5));
		List target=new ArrayList(Arrays.asList(1,2,3,5,4));
		PermuteTest p=new PermuteTest();
		p.permute(list, target, 0, 4);
	}
}

输出结果:

[1, 2, 4, 3, 5]

猜你喜欢

转载自blog.csdn.net/u012334071/article/details/41448981