Python - Sắp Xếp Mảng

Xin chào các bạn, các nhà lập trình Python mới nhảy! Hôm nay, chúng ta sẽ bơi lội vào thế giới kỳ diệu của việc sắp xếp mảng trong Python. Đừng lo nếu bạn mới bắt đầu học lập trình – tôi sẽ hướng dẫn bạn qua từng bước với nhiều ví dụ và giải thích. Khi hết hướng dẫn này, bạn sẽ sắp xếp mảng như một chuyên gia!

Python - Sort Arrays

Mảng là gì trong Python?

Trước khi bắt đầu sắp xếp, hãy nhanh chóng nói về mảng trong Python. Trong Python, chúng ta thường sử dụng danh sách để biểu diễn mảng. Một danh sách là một tập hợp các mục có thể có nhiều kiểu khác nhau. Ví dụ:

fruits = ["apple", "banana", "cherry", "date"]
numbers = [42, 8, 15, 16, 23]

Sắp Xếp Mảng Sử Dụng thuật toán Sắp Xếp

Hãy bắt đầu với một thuật toán sắp xếp cơ bản gọi là Bubble Sort. Đó không phải là thuật toán hiệu quả nhất, nhưng rất dễ hiểu cho người mới bắt đầu.

Bubble Sort

Dưới đây là một cách thực hiện đơn giản của Bubble Sort:

def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr

# Ví dụ sử dụng
numbers = [64, 34, 25, 12, 22, 11, 90]
sorted_numbers = bubble_sort(numbers)
print("Mảng đã sắp xếp:", sorted_numbers)

Hãy phân tích:

  1. Chúng ta định nghĩa một hàm gọi là bubble_sort nhận một mảng (danh sách) làm đầu vào.
  2. Chúng ta lấy độ dài của mảng và lưu nó vào n.
  3. Chúng ta sử dụng hai vòng lặp lồng nhau để so sánh các phần tử kề nhau.
  4. Nếu một phần tử lớn hơn phần tử tiếp theo, chúng ta hoán đổi chúng.
  5. Chúng ta lặp lại quá trình này cho đến khi toàn bộ mảng được sắp xếp.

Khi chạy mã này, bạn sẽ thấy:

Mảng đã sắp xếp: [11, 12, 22, 25, 34, 64, 90]

Chú ý thú vị: Bubble Sort được gọi như vậy vì các phần tử nhỏ hơn "nổi" lên đầu danh sách với mỗi lần lặp!

Sắp Xếp Mảng Sử Dụng phương thức sort() của Danh Sách

Danh sách Python có một phương thức sort() tích hợp sẵn giúp sắp xếp dễ dàng hơn. Hãy xem nó hoạt động như thế nào:

# Sắp xếp số
numbers = [64, 34, 25, 12, 22, 11, 90]
numbers.sort()
print("Số đã sắp xếp:", numbers)

# Sắp xếp chuỗi
fruits = ["banana", "cherry", "apple", "date"]
fruits.sort()
print("Trái cây đã sắp xếp:", fruits)

Output:

Số đã sắp xếp: [11, 12, 22, 25, 34, 64, 90]
Trái cây đã sắp xếp: ['apple', 'banana', 'cherry', 'date']

Phương thức sort() thay đổi danh sách gốc. Nó như là sắp xếp phòng của bạn – mọi thứ đều ở trong thứ tự, nhưng vẫn là phòng của bạn!

Sắp Xếp theo Thứ Tự Giảm Dần

Bạn cũng có thể sắp xếp theo thứ tự giảm dần bằng cách thêm tham số reverse=True:

numbers = [64, 34, 25, 12, 22, 11, 90]
numbers.sort(reverse=True)
print("Số đã sắp xếp (giảm dần):", numbers)

Output:

Số đã sắp xếp (giảm dần): [90, 64, 34, 25, 22, 12, 11]

Sắp Xếp Mảng Sử Dụng hàm sorted()

Hàm sorted() là một công cụ mạnh mẽ khác trong Python để sắp xếp. Không giống như sort(), nó không thay đổi danh sách gốc mà trả về một danh sách sắp xếp mới.

# Sắp xếp số
numbers = [64, 34, 25, 12, 22, 11, 90]
sorted_numbers = sorted(numbers)
print("Số gốc:", numbers)
print("Số đã sắp xếp:", sorted_numbers)

# Sắp xếp chuỗi
fruits = ["banana", "cherry", "apple", "date"]
sorted_fruits = sorted(fruits)
print("Trái cây gốc:", fruits)
print("Trái cây đã sắp xếp:", sorted_fruits)

Output:

Số gốc: [64, 34, 25, 12, 22, 11, 90]
Số đã sắp xếp: [11, 12, 22, 25, 34, 64, 90]
Trái cây gốc: ['banana', 'cherry', 'apple', 'date']
Trái cây đã sắp xếp: ['apple', 'banana', 'cherry', 'date']

Suy nghĩ về sorted() như là bạn tạo một bản sao của danh sách của bạn và sắp xếp bản sao đó, để danh sách gốc vẫn không thay đổi. Nó như là bạn chụp ảnh phòng bẩn của mình, sau đó sắp xếp mọi thứ một cách gọn gàng trong ảnh trong khi phòng thực tế của bạn vẫn giữ nguyên!

Sắp Xếp Với Khóa Tùy Chỉnh

Một trong những tính năng tuyệt vời của sorted() là khả năng sử dụng khóa tùy chỉnh. Giả sử chúng ta muốn sắp xếp một danh sách các từ theo độ dài:

words = ["python", "is", "awesome", "and", "fun"]
sorted_words = sorted(words, key=len)
print("Sắp xếp theo độ dài:", sorted_words)

Output:

Sắp xếp theo độ dài: ['is', 'and', 'fun', 'python', 'awesome']

Ở đây, chúng ta sử dụng len làm hàm khóa. Python áp dụng hàm này cho mỗi mục và sắp xếp dựa trên kết quả.

So Sánh Các Phương Pháp Sắp Xếp

Hãy tóm tắt các phương pháp sắp xếp mà chúng ta đã học trong một bảng dễ hiểu:

Phương Pháp Thay Đổi Gốc Trả Về Danh Sách Mới Có Thể Sử Dụng Khóa Tùy Chỉnh
Bubble Sort Không Không
list.sort() Không
sorted() Không

Kết Luận

Xin chúc mừng! Bạn đã học được nhiều cách để sắp xếp mảng trong Python. Từ triển khai thuật toán sắp xếp của riêng bạn đến sử dụng các phương thức tích hợp của Python, bạn hiện có các công cụ để duy trì sự tổ chức của dữ liệu.

Hãy nhớ, việc sắp xếp giống như việc sắp xếp sách trên kệ sách – có nhiều cách để làm điều đó, và phương pháp tốt nhất phụ thuộc vào điều bạn đang cố gắng đạt được. Thực hành với các loại dữ liệu và phương pháp sắp xếp khác nhau để trở thành một chuyên gia sắp xếp Python!

Chúc mãi mãi có mã, và mảng của bạn luôn được sắp xếp hoàn hảo! ??

Credits: Image by storyset