Đối với hầu hết mọi người, Sắp xếp bong bóng có thể là thuật toán sắp xếp đầu tiên họ nghe nói đến trong khóa học Khoa học Máy tính Show
Nó rất trực quan và dễ dàng "dịch" thành mã, điều này rất quan trọng đối với các nhà phát triển phần mềm mới để họ có thể dễ dàng biến ý tưởng thành một dạng có thể thực thi trên máy tính. Tuy nhiên, Sắp xếp bong bóng là một trong những thuật toán sắp xếp hoạt động kém nhất trong mọi trường hợp ngoại trừ việc kiểm tra xem mảng đã được sắp xếp hay chưa, trong đó thuật toán này thường hoạt động tốt hơn các thuật toán sắp xếp hiệu quả hơn như Sắp xếp nhanh Sắp xếp bong bóngÝ tưởng đằng sau Sắp xếp bong bóng rất đơn giản, chúng tôi xem xét các cặp phần tử liền kề trong một mảng, từng cặp một và hoán đổi vị trí của chúng nếu phần tử đầu tiên lớn hơn phần tử thứ hai hoặc chỉ cần di chuyển nếu không. Hãy xem một ví dụ và sắp xếp mảng 8, 5, 3, 1, 4, 7, 9 Nếu bạn tập trung vào số đầu tiên, số Thực hiệnVới cách trực quan hóa, hãy tiếp tục và thực hiện thuật toán. Một lần nữa, nó cực kỳ đơn giản Bây giờ, hãy điền vào một danh sách và gọi thuật toán trên đó
đầu ra
Tối ưu hóaViệc triển khai đơn giản đã thực hiện công việc của nó, nhưng có hai cách tối ưu hóa mà chúng tôi có thể thực hiện ở đây Khi không có hoán đổi nào được thực hiện, điều đó có nghĩa là danh sách được sắp xếp. Mặc dù vậy, với thuật toán đã triển khai trước đó, nó sẽ tiếp tục đánh giá phần còn lại của danh sách mặc dù nó thực sự không cần. Để khắc phục điều này, chúng tôi sẽ giữ cờ Nếu không có giao dịch hoán đổi nào được thực hiện, thuật toán sẽ dừng lại Cách tối ưu hóa khác mà chúng ta có thể thực hiện tận dụng thực tế là Sắp xếp bong bóng hoạt động theo cách sao cho các phần tử lớn nhất trong một lần lặp cụ thể sẽ kết thúc ở cuối mảng Lần đầu tiên chúng ta đi qua danh sách, vị trí n được đảm bảo là phần tử lớn nhất, lần thứ hai chúng ta đi qua vị trí n-1 được đảm bảo là phần tử lớn thứ hai, v.v. Điều này có nghĩa là với mỗi lần lặp liên tiếp, chúng ta có thể xem xét một phần tử ít hơn trước. Chính xác hơn, ở lần lặp thứ k, chỉ cần xét n - k + 1 phần tử đầu tiên Hãy tiếp tục và so sánh thời gian cần thiết để mỗi đoạn mã này sắp xếp cùng một danh sách hàng nghìn lần bằng cách sử dụng mô-đun Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
Không có nhiều sự khác biệt giữa hai cách tiếp cận sau do thực tế là danh sách cực kỳ ngắn, nhưng trên các danh sách lớn hơn - cách tối ưu hóa thứ hai có thể tạo ra sự khác biệt lớn Phần kết luậnTheo cách tiếp cận kém hiệu quả nhất, Sắp xếp bong bóng trải qua n-1 lần lặp, xem xét n-1 cặp phần tử liền kề. Điều này mang lại cho nó độ phức tạp về thời gian là O(n2), trong cả trường hợp tốt nhất và trường hợp trung bình. O(n2) được coi là khá kinh khủng đối với thuật toán sắp xếp Nó có độ phức tạp không gian O(1), nhưng điều đó không đủ để bù đắp cho những thiếu sót của nó trong các lĩnh vực khác Tuy nhiên, nó vẫn là một phần quan trọng trong lịch sử và cộng đồng phát triển phần mềm, và sách giáo khoa hầu như không bao giờ không đề cập đến nó khi nói về các thuật toán sắp xếp cơ bản Sắp xếp bong bóng, hoạt động bằng cách liên tục trao đổi các vật phẩm lân cận nếu chúng sai thứ tự. Trong hướng dẫn này, chúng ta sẽ thực hiện thao tác Sắp xếp bong bóng để sắp xếp một mảng Sắp xếp bong bóng - Giới thiệu cơ bảnSắp xếp bong bóng là một thuật toán sắp xếp trong đó hai phần tử liền kề được so sánh và hoán đổi cho đến khi chúng không còn theo thứ tự mong muốn. Trong thao tác này, mỗi phần tử của mảng di chuyển đến cuối trong mỗi lần lặp, tương tự như cách bong bóng khí nổi lên mặt nước Hãy để chúng tôi có một sự hiểu biết sơ bộ về sắp xếp bong bóng
Để hiểu rõ hơn chúng ta hãy xem sơ đồ dưới đây thuật toánĐến bây giờ, chúng tôi đã hiểu sơ bộ về cách sắp xếp hợp nhất được thực hiện. Để hiểu rõ hơn, hãy đi sâu vào thuật toán, sau đó là mã
Chương trình sắp xếp bong bóngNhư đã thảo luận ở trên về thuật toán, bây giờ chúng ta hãy đi sâu vào phần lập trình của thao tác Sắp xếp bong bóng chịu ảnh hưởng của thuật toán
Phần kết luậnTrong hướng dẫn này, chúng tôi đã thực hiện thao tác Sắp xếp bong bóng trong python để sắp xếp một mảng. Sắp xếp bong bóng được sử dụng khi độ phức tạp không thành vấn đề. Độ phức tạp trường hợp tốt nhất của sắp xếp bong bóng là O(n) và độ phức tạp trường hợp trung bình xấu nhất là O(n2), độ phức tạp không gian của sắp xếp bong bóng là O(1) Chức năng của sắp xếp bong bóng là gì?Sắp xếp bong bóng là một thuật toán cơ bản để sắp xếp một chuỗi số hoặc các phần tử khác theo đúng thứ tự . Phương pháp này hoạt động bằng cách kiểm tra từng tập hợp các phần tử liền kề trong chuỗi, từ trái sang phải, chuyển đổi vị trí của chúng nếu chúng không đúng thứ tự.
Công thức cho sắp xếp bong bóng là gì?Sắp xếp bong bóng có thể yêu cầu so sánh (n/2) lượt và O(n) lượt cho mỗi lượt trong trường hợp trung bình. Do đó, độ phức tạp về thời gian trường hợp trung bình của sắp xếp bong bóng là O(n/2 x n) = O(n/2 x n) = O(n/2 x n) = O(n/ . .
Thuật toán của phương thức sort() trong Python là gì?Sắp xếp Python() sử dụng thuật toán Timsort là thuật toán sắp xếp kết hợp, bắt nguồn từ sắp xếp hợp nhất và sắp xếp chèn.
Python có chức năng sắp xếp hợp nhất không?Hợp nhất Sắp xếp trong Python là một thuật toán sắp xếp hiệu quả và phổ biến hoạt động dựa trên khái niệm chia để trị . Kỹ thuật này liên quan đến việc chia một vấn đề thành nhiều vấn đề con. Mỗi vấn đề phụ sau đó được giải quyết riêng lẻ. Cuối cùng, các vấn đề con được kết hợp để tạo thành giải pháp cuối cùng. |