CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài viết trên blog CFSDN về phương pháp thực hiện hoán vị đầy đủ đệ quy này được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.
Ví dụ trong bài chia sẻ với các bạn cách triển khai sắp xếp đệ quy đầy đủ trong python để các bạn tham khảo.
Sắp xếp: Chọn ngẫu nhiên m phần tử từ n phần tử và sắp xếp chúng theo một thứ tự nhất định, gọi là hoán vị đầy đủ; Khi n==m, nó được gọi là hoán vị đầy đủ;
Ví dụ: cách sắp xếp đầy đủ của tập {1,2,3} là: { 1 2 3} { 1 3 2 } { 2 1 3 } { 2 3 1 } { 3 2 1 } { 3 1 2 } .
Suy nghĩ đệ quy:
Lấy phần tử đầu tiên trong mảng và đặt nó ở cuối, nghĩa là hoán đổi a[1] với a[n], sau đó tìm đệ quy cách sắp xếp đầy đủ của a[n-1].
1) Nếu mảng chỉ có một phần tử n=1, a={1} thì cách sắp xếp đầy đủ là {1} 2) Nếu mảng có hai phần tử n=2, a={1,2} thì cách sắp xếp đầy đủ là sự sắp xếp là: {2, 1}--Trao đổi a[1] với a[2]. Sau khi hoán đổi, hãy tìm cách sắp xếp đầy đủ của a[2-1]={2}, rút gọn thành 1) {1,2}--a[2] và a[2] được hoán đổi. Sau khi trao đổi, hãy tìm cách sắp xếp đầy đủ của a[2-1]={1}, rút gọn thành 1) 3) Nếu mảng có ba phần tử n=3 và a={1,2,3} thì toàn bộ sự sắp xếp là {{2,3 },1}--Trao đổi a[1] với a[3]. Sau đó tìm cách sắp xếp đầy đủ của a[3-1]={2,3}, rút gọn thành 2) {{1,3},2)--a[2] được hoán đổi với a[3]. Sau đó tìm cách sắp xếp đầy đủ của a[3-1]={1,3}, rút gọn thành 2) {{1,2},3)--a[3] được hoán đổi với a[3]. Sau đó tìm cách sắp xếp đầy đủ của a[3-1]={1,2}, rút gọn thành 2)... .
Và vân vân.
Mã cụ thể perm.py để thực hiện sắp xếp đầy đủ bằng python như sau:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
ĐẾM
=
0
định nghĩa
perm(n,bắt đầu,kết thúc):
toàn cầu
ĐẾM
nếu như
bắt đầu>
=
kết thúc:
in
N
ĐẾM
+
=
1
khác
:
Tôi
=
bắt đầu
vì
trong một
TRONG
phạm vi
(bắt đầu, kết thúc):
n[số],n[i]
=
n[i],n[số]
perm(n,bắt đầu
+
1
,kết thúc)
n[số],n[i]
=
n[i],n[số]
N
=
[
1
,
2
,
3
,
4
]
vĩnh viễn(n,
0
,
chỉ một
(N))
in
ĐẾM
|
Kết quả đầu ra cuối cùng như sau:
?
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
|
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
KHỞI ĐỘNG LẠI: D:
/
Python27
/
perm.py
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
[
1
,
2
,
3
,
4
]
[
1
,
2
,
4
,
3
]
[
1
,
3
,
2
,
4
]
[
1
,
3
,
4
,
2
]
[
1
,
4
,
3
,
2
]
[
1
,
4
,
2
,
3
]
[
2
,
1
,
3
,
4
]
[
2
,
1
,
4
,
3
]
[
2
,
3
,
1
,
4
]
[
2
,
3
,
4
,
1
]
[
2
,
4
,
3
,
1
]
[
2
,
4
,
1
,
3
]
[
3
,
2
,
1
,
4
]
[
3
,
2
,
4
,
1
]
[
3
,
1
,
2
,
4
]
[
3
,
1
,
4
,
2
]
[
3
,
4
,
1
,
2
]
[
3
,
4
,
2
,
1
]
[
4
,
2
,
3
,
1
]
[
4
,
2
,
1
,
3
]
[
4
,
3
,
2
,
1
]
[
4
,
3
,
1
,
2
]
[
4
,
1
,
3
,
2
]
[
4
,
1
,
2
,
3
]
24
>>>
|
Trên đây là toàn bộ nội dung bài viết này hi vọng nó sẽ giúp ích cho việc học của mọi người và cũng mong mọi người ủng hộ mình.
Liên kết gốc: https://blog.csdn.net/zhoufen12345/article/details/53560099.
Cuối cùng, bài viết này về phương pháp triển khai hoán vị đầy đủ đệ quy Python kết thúc tại đây. Nếu bạn muốn biết thêm về phương pháp triển khai hoán vị đầy đủ đệ quy Python, vui lòng tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt các bài viết liên quan. blog tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!