Hoán đổi hai biến sử dụng hàm trong Python có thể được thực hiện bằng cách chuyển các biến của chúng ta tới hàm do người dùng xác định làm đối số và trả về hoặc in dữ liệu đã hoán đổi
Về đối số và giá trị trả về, hàm có 4 loại
- Với các đối số và giá trị trả về
- Có đối số và không có giá trị trả về
- Không có đối số và có giá trị trả về
- Không có đối số và không có giá trị trả về
[19, 65, 23, 90]2
[19, 65, 23, 90]0
[19, 65, 23, 90]5_______0_______0_______0_______7
[19, 65, 23, 90]8
[19, 65, 23, 90]0
[19, 65, 23, 90]0_______0_______0
[19, 65, 23, 90]2
[19, 65, 23, 90]2
[19, 65, 23, 90]4
[19, 65, 23, 90]0
[19, 65, 23, 90]6
[19, 65, 23, 90]7
[19, 65, 23, 90]8
[19, 65, 23, 90]9
[19, 65, 23, 90]0_______0_______1
[19, 65, 23, 90]2
[19, 65, 23, 90]1
[19, 65, 23, 90]4
[19, 65, 23, 90]1
[19, 65, 23, 90]6
[19, 65, 23, 90]7
[19, 65, 23, 90]8_______0_______8
[19, 65, 23, 90]0
[19, 65, 23, 90]1
[19, 65, 23, 90]2
[19, 65, 23, 90]3
[19, 65, 23, 90]4_______0_______7
[19, 65, 23, 90]6
[19, 65, 23, 90]7
[19, 65, 23, 90]0
[19, 65, 23, 90]9
[19, 65, 23, 90]7
[19, 65, 23, 90]0
# Python3 program to swap elements
2đầu ra.
[19, 65, 23, 90]
Thời gian phức tạp. O[1], để sử dụng các hoạt động liên tục
Không gian phụ trợ. O[1], để sử dụng không gian thừa không đổi
Cách tiếp cận #2. Sử dụng danh sách sẵn có. hàm pop[]
Pop phần tử tại pos1 và lưu trữ nó trong một biến. Tương tự, bật phần tử tại pos2 và lưu nó vào một biến khác. Bây giờ hãy chèn hai phần tử đã xuất hiện vào vị trí ban đầu của nhau
Python3
# Python3 program to swap elements
# at given positions
# Swap function
def
swapPositions[
[19, 65, 23, 90]0
[19, 65, 23, 90]1
[19, 65, 23, 90]2
[19, 65, 23, 90]2
# at given positions
2[19, 65, 23, 90]2
# at given positions
4[19, 65, 23, 90]8
[19, 65, 23, 90]0
# at given positions
7[19, 65, 23, 90]2
# at given positions
9[19, 65, 23, 90]8
[19, 65, 23, 90]0
# Swap function
2[19, 65, 23, 90]7
[19, 65, 23, 90]0
# Swap function
5# Swap function
6
[19, 65, 23, 90]2
# Swap function
8[19, 65, 23, 90]2
[19, 65, 23, 90]0
def
1[19, 65, 23, 90]2
[19, 65, 23, 90]0
def
4[19, 65, 23, 90]2
[19, 65, 23, 90]2
[19, 65, 23, 90]4
[19, 65, 23, 90]0
[19, 65, 23, 90]6
[19, 65, 23, 90]7
[19, 65, 23, 90]8
[19, 65, 23, 90]9
[19, 65, 23, 90]0_______0_______1
[19, 65, 23, 90]2
[19, 65, 23, 90]1
[19, 65, 23, 90]4
[19, 65, 23, 90]1
[19, 65, 23, 90]6
[19, 65, 23, 90]7
[19, 65, 23, 90]8_______0_______8
[19, 65, 23, 90]0
[19, 65, 23, 90]1
[19, 65, 23, 90]2
[19, 65, 23, 90]3
[19, 65, 23, 90]4_______0_______7
[19, 65, 23, 90]6
[19, 65, 23, 90]7
[19, 65, 23, 90]0
[19, 65, 23, 90]9
[19, 65, 23, 90]7
[19, 65, 23, 90]0
# Python3 program to swap elements
2đầu ra.
[19, 65, 23, 90]
Thời gian phức tạp. O[1], để sử dụng các hoạt động liên tục
Không gian phụ trợ. O[1], để sử dụng không gian thừa không đổi
Cách tiếp cận #3. Sử dụng biến tuple
Lưu trữ phần tử tại pos1 và pos2 dưới dạng một cặp trong một biến tuple, giả sử get. Giải nén các phần tử có vị trí pos2 và pos1 trong danh sách đó. Bây giờ, cả hai vị trí trong danh sách đó đã được hoán đổi.
Python3
[19, 65, 23, 90]16
[19, 65, 23, 90]17
# Swap function
def
swapPositions[
[19, 65, 23, 90]0
[19, 65, 23, 90]1
[19, 65, 23, 90]2
[19, 65, 23, 90]24
[19, 65, 23, 90]2
[19, 65, 23, 90]26
[19, 65, 23, 90]2
[19, 65, 23, 90]28_______0_______8
[19, 65, 23, 90]0_______0_______5
[19, 65, 23, 90]0_______0_______7
[19, 65, 23, 90]34
[19, 65, 23, 90]2
[19, 65, 23, 90]36
[19, 65, 23, 90]2
[19, 65, 23, 90]0_______0_______0_______0_______0_______0_______2
[19, 65, 23, 90]8
[19, 65, 23, 90]28
[19, 65, 23, 90]34
[19, 65, 23, 90]2
[19, 65, 23, 90]4
[19, 65, 23, 90]0
[19, 65, 23, 90]48
[19, 65, 23, 90]7
[19, 65, 23, 90]8
[19, 65, 23, 90]9
[19, 65, 23, 90]0_______0_______1
[19, 65, 23, 90]2
[19, 65, 23, 90]1
[19, 65, 23, 90]4
[19, 65, 23, 90]1
[19, 65, 23, 90]6
[19, 65, 23, 90]7
[19, 65, 23, 90]8_______0_______8
[19, 65, 23, 90]0
[19, 65, 23, 90]1
[19, 65, 23, 90]2
[19, 65, 23, 90]3
[19, 65, 23, 90]4_______0_______7
[19, 65, 23, 90]6
[19, 65, 23, 90]7
[19, 65, 23, 90]0
[19, 65, 23, 90]9
[19, 65, 23, 90]7
[19, 65, 23, 90]0
# Python3 program to swap elements
2đầu ra.
[19, 65, 23, 90]
Thời gian phức tạp. O[1], để sử dụng các hoạt động liên tục
Không gian phụ trợ. O[1], để sử dụng không gian thừa không đổi
Cách tiếp cận #4. Sử dụng biến tạm thời
Python3
# Python3 program to swap elements
# at given positions
# Swap function
def
[19, 65, 23, 90]79
[19, 65, 23, 90]2
[19, 65, 23, 90]81
[19, 65, 23, 90]8
[19, 65, 23, 90]83
[19, 65, 23, 90]2
[19, 65, 23, 90]83
[19, 65, 23, 90]8
[19, 65, 23, 90]87
[19, 65, 23, 90]2
[19, 65, 23, 90]87_______0_______8
[19, 65, 23, 90]81
[19, 65, 23, 90]2
[19, 65, 23, 90]4
[19, 65, 23, 90]94
[19, 65, 23, 90]6
[19, 65, 23, 90]7
[19, 65, 23, 90]8
[19, 65, 23, 90]9
[19, 65, 23, 90]0_______0_______1
[19, 65, 23, 90]2
[19, 65, 23, 90]1
[19, 65, 23, 90]4
[19, 65, 23, 90]1
[19, 65, 23, 90]6
[19, 65, 23, 90]7
[19, 65, 23, 90]07
[19, 65, 23, 90]8
[19, 65, 23, 90]0
[19, 65, 23, 90]1
[19, 65, 23, 90]2
[19, 65, 23, 90]3
[19, 65, 23, 90]4_______0_______7
[19, 65, 23, 90]6
[19, 65, 23, 90]7
[19, 65, 23, 90]0
[19, 65, 23, 90]9
[19, 65, 23, 90]7
[19, 65, 23, 90]0
# Python3 program to swap elements
2Đầu ra
[19, 65, 23, 90]
Thời gian phức tạp. O[1], để sử dụng các hoạt động liên tục
Không gian phụ trợ. O[1], để sử dụng không gian thừa không đổi
Cách tiếp cận #5. sử dụng liệt kê
Một cách khác để hoán đổi các phần tử trong danh sách là sử dụng hàm liệt kê để lấy chỉ số và giá trị của từng phần tử trong danh sách, sau đó sử dụng vòng lặp để tìm các phần tử cần hoán đổi và hoán đổi chúng
Ví dụ
Python3
def
[19, 65, 23, 90]79
[19, 65, 23, 90]2
[19, 65, 23, 90]25
[19, 65, 23, 90]26_______0_______27
[19, 65, 23, 90]28
[19, 65, 23, 90]29
[19, 65, 23, 90]30_______0_______31
[19, 65, 23, 90]32
[19, 65, 23, 90]8
[19, 65, 23, 90]8
[19, 65, 23, 90]35
[19, 65, 23, 90]36_______0_______37
[19, 65, 23, 90]8
[19, 65, 23, 90]39
[19, 65, 23, 90]30_______0_______31
[19, 65, 23, 90]32
[19, 65, 23, 90]8
[19, 65, 23, 90]8
[19, 65, 23, 90]45
[19, 65, 23, 90]36_______0_______47
[19, 65, 23, 90]8
[19, 65, 23, 90]39
[19, 65, 23, 90]2
[19, 65, 23, 90]83
[19, 65, 23, 90]8
[19, 65, 23, 90]47
[19, 65, 23, 90]2
[19, 65, 23, 90]87_______0_______8
[19, 65, 23, 90]37
[19, 65, 23, 90]2
[19, 65, 23, 90]4
[19, 65, 23, 90]94
[19, 65, 23, 90]7
[19, 65, 23, 90]8
[19, 65, 23, 90]9
[19, 65, 23, 90]0_______0_______1
[19, 65, 23, 90]2
[19, 65, 23, 90]1
[19, 65, 23, 90]4
[19, 65, 23, 90]1
[19, 65, 23, 90]6
[19, 65, 23, 90]7
[19, 65, 23, 90]07
[19, 65, 23, 90]8
[19, 65, 23, 90]0
[19, 65, 23, 90]1
[19, 65, 23, 90]2
[19, 65, 23, 90]3
[19, 65, 23, 90]4_______0_______7
[19, 65, 23, 90]6
[19, 65, 23, 90]7
[19, 65, 23, 90]0
[19, 65, 23, 90]9
[19, 65, 23, 90]7
[19, 65, 23, 90]0
# Python3 program to swap elements
2[19, 65, 23, 90]87
Đầu ra
[19, 65, 23, 90]
Cách tiếp cận này có độ phức tạp về thời gian là O[n], vì nó liên quan đến việc lặp qua toàn bộ danh sách để tìm các phần tử được hoán đổi. Độ phức tạp của không gian là O[1], vì nó chỉ sử dụng một lượng không gian bổ sung không đổi để lưu trữ các phần tử được hoán đổi
Lưu ý rằng phương pháp này có thể được thực hiện hiệu quả hơn bằng cách sử dụng một vòng lặp duy nhất và thoát ra khỏi vòng lặp khi các phần tử đã được tìm thấy và hoán đổi