Sắp xếp bậc hai

Sắp xếp - là sắp xếp lại các phần tử của một mảng (danh sách) theo một thứ tự nhất định.

Phương pháp bong bóng (sắp xếp bong bóng) hoặc sắp xếp theo trao đổi đơn giản).
Một tác phẩm kinh điển bất hủ của thể loại này. Nguyên tắc hoạt động rất đơn giản: chúng ta đi xung quanh mảng từ đầu đến cuối, đồng thời hoán đổi các phần tử lân cận chưa được sắp xếp. Kết quả của lần vượt qua đầu tiên đến vị trí cuối cùng, "bật lên" phần tử cực đại. Bây giờ chúng ta lại bỏ qua phần chưa sắp xếp của mảng (từ phần tử đầu tiên đến phần tử áp chót) và thay đổi các hàng xóm chưa sắp xếp trên đường đi. Phần tử lớn thứ hai sẽ ở vị trí áp chót. Tiếp tục với tinh thần tương tự, chúng ta sẽ bỏ qua phần chưa được sắp xếp ngày càng giảm của mảng, đẩy giá trị lớn nhất tìm được về cuối.
 
Nguồn

Thuật toán thực hiện thuật toán này
LOOP CHO J=1 ĐẾN N-1 BƯỚC 1 f=0 LOOP FOR I=1 TO N-J-1 BƯỚC 1 NẾU A[I] > A[I+1] THÌ TRAO ĐỔI A[I],A[I+1] f=1 TIẾP THEO TÔI NẾU F=0 THÌ THOÁT VÒNG VÒNG // nếu không có trao đổi nào trong quá trình vượt qua,   // có nghĩa là tất cả các phần tử   // sắp xếp theo thứ tự TIẾP THEO J Độ phức tạp của thuật toán này: \(\displaystyle O(n^{2})\).


Thông tin hữu ích khác: Bài viết trên Wikipedia.

 

Sắp xếp chèn

Sắp xếp chèn (Sắp xếp chèn) —  ;thuật toán sắp xếp trong đó các phần tử của chuỗi đầu vào được tra cứu cùng một lúc và mỗi phần tử mới đến được đặt ở vị trí thích hợp trong số các phần tử đã sắp xếp trước đó.


Sắp xếp chèn – nó là một thuật toán rất đơn giản nhưng không hiệu quả, tuy nhiên có một số lợi thế cụ thể khiến nó trở nên phù hợp ngay cả sau khi nhiều thuật toán khác nói chung hiệu quả hơn đã được phát triển.

Với sắp xếp chèn, bạn không cần phải sắp xếp toàn bộ mảng trước khi sắp xếp. Thuật toán có thể nhận từng phần tử một trong quá trình sắp xếp. Điều này rất hữu ích nếu chúng ta cần thêm nhiều phần tử hơn trong quá trình sắp xếp. Thuật toán sẽ chèn phần tử mới vào đúng vị trí mà không cần "thực hiện lại" sắp xếp toàn bộ mảng.

Sắp xếp chèn có thể được sử dụng trong thực tế do tính hiệu quả của nó trên các tập dữ liệu nhỏ (~10 phần tử).

Vấn đề là thế này: có một phần của mảng đã được sắp xếp, và bạn muốn chèn các phần tử còn lại của mảng vào phần đã sắp xếp mà vẫn giữ nguyên trật tự. Để làm điều này, ở mỗi bước của thuật toán, chúng ta chọn một trong các phần tử dữ liệu đầu vào và chèn nó vào vị trí mong muốn trong phần đã được sắp xếp của mảng, cho đến khi toàn bộ tập dữ liệu đầu vào được sắp xếp. Phương pháp chọn phần tử tiếp theo từ mảng đầu vào là tùy ý, nhưng thông thường (và để có được thuật toán sắp xếp ổn định), các phần tử được chèn theo thứ tự xuất hiện của chúng trong mảng đầu vào.

Thuật toán thực hiện thuật toán này
// Phần tử null được coi là một dãy đã được sắp xếp. // Do đó, vòng lặp bắt đầu từ 1 LOOP FOR I=1 TO N-1 BƯỚC 1 X=A[I] J=tôi WHEN J>0 AND A[J-1]>X //đang tìm chỗ chèn TRAO ĐỔI A[J],A[J-1] J=J-1 KẾT THÚC A[J]=X TIẾP THEO TÔI Độ phức tạp tính toán: \(\displaystyle O(n^{2})\).