Tham quan 5 thuật toán sắp xếp hàng đầu với mã Python

Sắp xếp các thuật toán phức tạp

Sắp xếp là một kỹ năng mà mọi kỹ sư và nhà phát triển phần mềm cần một số kiến ​​thức. Không chỉ để vượt qua các cuộc phỏng vấn mã hóa mà như một sự hiểu biết chung về chính lập trình. Các thuật toán sắp xếp khác nhau là một minh họa hoàn hảo về cách thiết kế thuật toán có thể có tác động mạnh mẽ như vậy đến độ phức tạp, tốc độ và hiệu quả của chương trình.

Hãy cùng chúng tôi tham quan 6 thuật toán sắp xếp hàng đầu và xem cách chúng tôi có thể thực hiện chúng trong Python!

Sắp xếp bong bóng

Sắp xếp bong bóng là thứ thường được dạy trong các lớp CS giới thiệu vì nó cho thấy rõ cách thức sắp xếp hoạt động trong khi đơn giản và dễ hiểu. Bong bóng sắp xếp các bước thông qua danh sách và so sánh các cặp yếu tố liền kề. Các yếu tố được hoán đổi nếu chúng theo thứ tự sai. Việc chuyển qua phần chưa sắp xếp của danh sách được lặp lại cho đến khi danh sách được sắp xếp. Bởi vì Bubble sort liên tục đi qua phần chưa sắp xếp của danh sách, nên nó có độ phức tạp tồi tệ nhất là O (n²).

Lựa chọn sắp xếp

Lựa chọn sắp xếp cũng khá đơn giản nhưng thường xuyên vượt trội hơn so với sắp xếp bong bóng. Nếu bạn đang chọn giữa hai thứ, thì tốt nhất là chỉ mặc định quyền chọn sắp xếp. Với Sắp xếp lựa chọn, chúng tôi chia danh sách / mảng đầu vào của chúng tôi thành hai phần: danh sách con của các mục đã được sắp xếp và danh sách con của các mục còn lại sẽ được sắp xếp tạo nên phần còn lại của danh sách. Trước tiên chúng ta tìm phần tử nhỏ nhất trong danh sách con chưa sắp xếp và đặt nó ở cuối danh sách con được sắp xếp. Vì vậy, chúng tôi liên tục lấy phần tử chưa sắp xếp nhỏ nhất và đặt nó theo thứ tự được sắp xếp trong danh sách con được sắp xếp. Quá trình này tiếp tục lặp đi lặp lại cho đến khi danh sách được sắp xếp đầy đủ.

Sắp xếp chèn

Sắp xếp chèn là nhanh hơn và đơn giản hơn nhiều so với sắp xếp bong bóng và sắp xếp lựa chọn. Buồn cười thay, nó có bao nhiêu người sắp xếp thẻ của họ khi chơi một trò chơi bài! Trên mỗi lần lặp lại, sắp xếp chèn sẽ loại bỏ một phần tử khỏi mảng. Sau đó, nó tìm vị trí mà phần tử đó thuộc về một mảng được sắp xếp khác và chèn nó vào đó. Nó lặp lại quá trình này cho đến khi không còn yếu tố đầu vào.

Hợp nhất sắp xếp

Hợp nhất sắp xếp là một ví dụ hoàn hảo thanh lịch của thuật toán Divide and Conquer. Nó đơn giản sử dụng 2 bước chính của thuật toán như vậy:

(1) Liên tục phân chia danh sách chưa sắp xếp cho đến khi bạn có N danh sách con, trong đó mỗi danh sách con có 1 phần tử là không được sắp xếp và N là số phần tử trong mảng ban đầu.

(2) Hợp nhất nhiều lần i.e chinh phục các danh sách con cùng lúc 2 để tạo danh sách con được sắp xếp mới cho đến khi tất cả các yếu tố được hợp nhất hoàn toàn thành một mảng được sắp xếp.

Sắp xếp nhanh chóng

Sắp xếp nhanh cũng là một thuật toán phân chia và chinh phục như sắp xếp hợp nhất. Mặc dù nó phức tạp hơn một chút, nhưng trong hầu hết các triển khai tiêu chuẩn, nó thực hiện nhanh hơn đáng kể so với sắp xếp hợp nhất và hiếm khi đạt đến độ phức tạp trong trường hợp xấu nhất là O (n²). Nó có 3 bước chính:

(1) Trước tiên chúng tôi chọn một phần tử mà chúng tôi sẽ gọi trục từ mảng.

(2) Di chuyển tất cả các yếu tố nhỏ hơn trục sang trái của trục; di chuyển tất cả các phần tử lớn hơn trục sang bên phải của trục. Đây được gọi là hoạt động phân vùng.

(3) Áp dụng đệ quy 2 bước trên một cách riêng biệt cho từng mảng con của các phần tử có giá trị nhỏ hơn và lớn hơn trục cuối cùng.

Thích học?

Theo dõi tôi trên twitter nơi tôi đăng tất cả về AI, Công nghệ và Khoa học mới nhất và vĩ đại nhất! Kết nối với tôi trên LinkedIn quá!

Đề nghị đọc

Bạn muốn tìm hiểu thêm về mã hóa trong Python? Cuốn sách Python Crash Course là tài nguyên tốt nhất hiện có để học cách viết mã bằng Python!

Và chỉ cần ngẩng cao đầu, tôi ủng hộ blog này với các liên kết liên kết của Amazon đến những cuốn sách tuyệt vời, bởi vì chia sẻ những cuốn sách tuyệt vời giúp mọi người! Là một Hiệp hội Amazon, tôi kiếm được từ việc mua hàng đủ điều kiện.