java全排列算法 递归算法_Java递归实现全排列

最近整理之前自己学习Java时的一些代码笔记,可能都是一些比较基础的Java知识,在这里只是给需要的人参考一下。

递归算法:将数据分为两部分,递归将数据从左侧移右侧实现全排列

package interview;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

public class FullSort {

//将NUM设置为待排列数组的长度即实现全排列

private static int NUM = 5;

/**

* 递归算法:将数据分为两部分,递归将数据从左侧移右侧实现全排列

*

* @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[] { "1", "2", "3", "4","5" };

sort(Arrays.asList(datas), new ArrayList());

}

}

程序运行结果:

12345

12354

12435

12453

12534

12543

13245

13254

13425

13452

13524

13542

14235

14253

14325

14352

14523

14532

15234

15243

15324

15342

15423

15432

21345

21354

21435

21453

21534

21543

23145

23154

23415

23451

23514

23541

24135

24153

24315

24351

24513

24531

25134

25143

25314

25341

25413

25431

31245

31254

31425

31452

31524

31542

32145

32154

32415

32451

32514

32541

34125

34152

34215

34251

34512

34521

35124

35142

35214

35241

35412

35421

41235

41253

41325

41352

41523

41532

42135

42153

42315

42351

42513

42531

43125

43152

43215

43251

43512

43521

45123

45132

45213

45231

45312

45321

51234

51243

51324

51342

51423

51432

52134

52143

52314

52341

52413

52431

53124

53142

53214

53241

53412

53421

54123

54132

54213

54231

54312

54321

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值