Java基于递归解决全排列问题算法示例

2025-05-29 0 15

本文实例讲述了Java基于递归解决全排列问题算法。分享给大家供大家参考,具体如下:

排列问题

R={r1,r2,…,rn}是要进行排列的n个元素,Ri=R{ri}。集合x中元素的全排列记为Perm(X)(ri)Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列。R全排列可归纳如下:

当n=1时,Perm(R)=(r),其中r是集合中唯一的元素;

当n>1时,Perm(R)(r1)Perm(R1),(r2)Perm(R2),(r3)Perm(R3)。。。。(rn)Perm(Rn)构成。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30
public class AllSort {

public static void perm(int[] list, int k, int m) {

if( k == m) {

for (int i = 0; i <=m; i++) {

System.out.print(list[i]);

}

System.out.println();

}

else{

for(int i = k; i <= m; i++) {

swap(list,k,i);

perm(list, k+1 , m);

swap(list,k,i);

}

}

}

public static void swap(int[] list, int a, int b) {

int temp;

temp = list[a];

list[a] = list[b];

list[b] = temp;

}

public static void main(String args[]) {

int[] list = new int[5];

for(int i = 0; i < list.length; i++) {

list[i] = i+1;

}

perm(list,0,list.length-1);

}

}

运行结果:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120
12345

12354

12435

12453

12543

12534

13245

13254

13425

13452

13542

13524

14325

14352

14235

14253

14523

14532

15342

15324

15432

15423

15243

15234

21345

21354

21435

21453

21543

21534

23145

23154

23415

23451

23541

23514

24315

24351

24135

24153

24513

24531

25341

25314

25431

25413

25143

25134

32145

32154

32415

32451

32541

32514

31245

31254

31425

31452

31542

31524

34125

34152

34215

34251

34521

34512

35142

35124

35412

35421

35241

35214

42315

42351

42135

42153

42513

42531

43215

43251

43125

43152

43512

43521

41325

41352

41235

41253

41523

41532

45312

45321

45132

45123

45213

45231

52341

52314

52431

52413

52143

52134

53241

53214

53421

53412

53142

53124

54321

54312

54231

54213

54123

54132

51342

51324

51432

51423

51243

51234

希望本文所述对大家java程序设计有所帮助。

原文链接:http://blog.csdn.net/u014755255/article/details/50183779

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java基于递归解决全排列问题算法示例 https://www.kuaiidc.com/113491.html

相关文章

发表评论
暂无评论