Trong lập trình Swift, việc sắp xếp mảng là một trong những công việc cơ bản và thường xuyên gặp phải. Để thực hiện điều này, Swift cung cấp phương thức sort()
giúp bạn sắp xếp các phần tử trong một mảng theo thứ tự tăng dần hoặc giảm dần dễ dàng và hiệu quả. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng sort()
để sắp xếp mảng trong Swift.
Phương thức sort()
Phương thức sort()
là phương thức biến đổi (mutating method), tức là nó sẽ thay đổi trực tiếp mảng cần sắp xếp. Dưới đây là cú pháp cơ bản của sort()
:
array.sort()
Phương thức này sẽ sắp xếp các phần tử trong mảng theo thứ tự mặc định của các phần tử đó. Ví dụ, đối với mảng số nguyên, thứ tự mặc định sẽ là từ nhỏ đến lớn.
Ví dụ cơ bản
Giả sử bạn có một mảng số nguyên như sau:
var numbers = [5, 2, 8, 1, 7]
Để sắp xếp mảng này theo thứ tự tăng dần, bạn đơn giản chỉ cần gọi phương thức sort()
:
numbers.sort()
Sau khi thực hiện, mảng numbers
sẽ được sắp xếp thành:
[1, 2, 5, 7, 8]
Sắp xếp theo thứ tự giảm dần
Để sắp xếp mảng theo thứ tự giảm dần, bạn có thể sử dụng closure để chỉ định thứ tự mong muốn:
numbers.sort { $0 > $1 }
Trong đó, $0
và $1
lần lượt đại diện cho hai phần tử bất kỳ trong mảng mà phương thức sort()
đang so sánh. Đoạn closure này có nghĩa là: "Nếu phần tử đầu tiên lớn hơn phần tử thứ hai, hãy đặt phần tử đầu tiên trước phần tử thứ hai".
Sau khi thực hiện, mảng numbers
sẽ trở thành:
[8, 7, 5, 2, 1]
Phương thức sorted()
Ngoài sort()
, Swift còn cung cấp phương thức sorted()
, phương thức này trả về một mảng mới đã được sắp xếp mà không thay đổi mảng ban đầu. Phương thức này không biến đổi dữ liệu gốc, phù hợp với những trường hợp bạn cần giữ nguyên mảng ban đầu.
Cú pháp của sorted()
tương tự như sort()
:
let sortedNumbers = numbers.sorted()
Dưới đây là một ví dụ cụ thể:
let numbers = [5, 2, 8, 1, 7]
let sortedNumbers = numbers.sorted()
Mảng sortedNumbers
sẽ là [1, 2, 5, 7, 8]
, trong khi mảng numbers
vẫn giữ nguyên giá trị ban đầu là [5, 2, 8, 1, 7]
.
Sắp xếp với điều kiện tùy biến
Phương thức sorted()
cũng có thể sử dụng closure để sắp xếp mảng theo điều kiện tùy chỉnh. Ví dụ, để sắp xếp mảng theo thứ tự giảm dần, bạn có thể thực hiện như sau:
let sortedDescNumbers = numbers.sorted { $0 > $1 }
Kết quả sẽ là mảng sortedDescNumbers
:
[8, 7, 5, 2, 1]
Sử dụng sort()
và sorted()
với mảng chứa đối tượng
Khi làm việc với các mảng chứa đối tượng, bạn hoàn toàn có thể sử dụng các phương thức sort()
và sorted()
với các thuộc tính của đối tượng đó. Ví dụ, giả sử bạn có một mảng chứa các đối tượng Person
với thuộc tính name
:
struct Person {
let name: String
}
var people = [
Person(name: "John"),
Person(name: "Anna"),
Person(name: "Zoe"),
Person(name: "Mike")
]
Bạn có thể sắp xếp mảng people
theo thứ tự bảng chữ cái của name
như sau:
people.sort { $0.name < $1.name }
Kết quả sẽ là:
[
Person(name: "Anna"),
Person(name: "John"),
Person(name: "Mike"),
Person(name: "Zoe")
]
Tương tự, để sắp xếp theo thứ tự ngược lại:
people.sort { $0.name > $1.name }
Mảng people
sẽ là:
[
Person(name: "Zoe"),
Person(name: "Mike"),
Person(name: "John"),
Person(name: "Anna")
]
Kết luận
Việc sắp xếp mảng trong Swift trở nên cực kỳ đơn giản và tiện lợi với sự hỗ trợ của các phương thức sort()
và sorted()
. Bạn có thể dễ dàng sắp xếp mảng theo thứ tự tăng dần, giảm dần hay theo bất kỳ tiêu chí nào mà mình mong muốn. Với sự linh hoạt của closure, phương thức sort()
và sorted()
trở thành công cụ mạnh mẽ giúp bạn giải quyết nhiều bài toán sắp xếp khác nhau trong lập trình. Hy vọng rằng bài viết này đã cung cấp cho bạn những kiến thức cần thiết để làm chủ các phương thức sắp xếp mảng trong Swift.
Comments