Giải thuật sắp xếp chèn (Insertion Sort)
Sắp xếp chèn (Insertion Sort) là gì?
Sắp xếp chèn là một giải thuật sắp xếp dựa trên so sánh in-place. Ở đây, một danh sách con luôn luôn được duy trì dưới dạng đã qua sắp xếp. Sắp xếp chèn là chèn thêm một phần tử vào danh sách con đã qua sắp xếp. Phần tử được chèn vào vị trí thích hợp sao cho vẫn đảm bảo rằng danh sách con đó vẫn sắp theo thứ tự.
Với cấu trúc dữ liệu mảng, chúng ta tưởng tượng là: mảng gồm hai phần: một danh sách con đã được sắp xếp và phần khác là các phần tử không có thứ tự. Giải thuật sắp xếp chèn sẽ thực hiện việc tìm kiếm liên tiếp qua mảng đó, và các phần tử không có thứ tự sẽ được di chuyển và được chèn vào vị trí thích hợp trong danh sách con (của cùng mảng đó).
Giải thuật này không thích hợp sử dụng với các tập dữ liệu lớn khi độ phức tạp trường hợp xấu nhất và trường hợp trung bình là Ο(n2) với n là số phần tử.
Cách giải thuật sắp xếp chèn thực hiện?
Ví dụ chúng ta có một mảng gồm các phần tử không có thứ tự:

Giải thuật sắp xếp chèn so sánh hai phần tử đầu tiên:

Giải thuật tìm ra rằng cả 14 và 33 đều đã trong thứ tự tăng dần. Bây giờ, 14 là trong danh sách con đã qua sắp xếp.

Giải thuật sắp xếp chèn tiếp tục di chuyển tới phần tử kế tiếp và so sánh 33 và 27.

Và thấy rằng 33 không nằm ở vị trí đúng.

Giải thuật sắp xếp chèn tráo đổi vị trí của 33 và 27. Đồng thời cũng kiểm tra tất cả phần tử trong danh sách con đã sắp xếp. Tại đây, chúng ta thấy rằng trong danh sách con này chỉ có một phần tử 14 và 27 là lớn hơn 14. Do vậy danh sách con vẫn giữ nguyên sau khi đã tráo đổi.

Bây giờ trong danh sách con chúng ta có hai giá trị 14 và 27. Tiếp tục so sánh 33 với 10.

Hai giá trị này không theo thứ tự.

Vì thế chúng ta tráo đổi chúng.

Việc tráo đổi dẫn đến 27 và 10 không theo thứ tự.

Vì thế chúng ta cũng tráo đổi chúng.

Chúng ta lại thấy rằng 14 và 10 không theo thứ tự.

Và chúng ta tiếp tục tráo đổi hai số này. Cuối cùng, sau vòng lặp thứ 3 chúng ta có 4 phần tử.

Tiến trình trên sẽ tiếp tục diễn ra cho tới khi tất cả giá trị chưa được sắp xếp được sắp xếp hết vào trong danh sách con đã qua sắp xếp.
Tiếp theo chúng ta cùng tìm hiểu khía cạnh lập trình của giải thuật sắp xếp chèn.
Giải thuật sắp xếp chèn (Insertion Sort)
Từ minh họa trên chúng ta đã có bức tranh tổng quát về giải thuật sắp xếp chèn, từ đó chúng ta sẽ có các bước cơ bản trong giải thuật như sau:
Bước 1: Kiểm tra nếu phần tử đầu tiên đã được sắp xếp. trả về 1 Bước 2: Lấy phần tử kế tiếp Bước 3: So sánh với tất cả phần tử trong danh sách con đã qua sắp xếp Bước 4: Dịch chuyển tất cả phần tử trong danh sách con mà lớn hơn giá trị để được sắp xếp Bước 5: Chèn giá trị đó Bước 6: Lặp lại cho tới khi danh sách được sắp xếp
Giải thuật mẫu cho sắp xếp nổi bọt
Bắt đầu hàm insertionSort( A : mảng phần tử ) int holePosition int valueToInsert for i = 1 tới length(A) thực hiện: /* chọn một giá trị để chèn */ valueToInsert = A[i] holePosition = i /*xác định vị trí cho phần tử được chèn */ while holePosition > 0 và A[holePosition-1] > valueToInsert thực hiện: A[holePosition] = A[holePosition-1] holePosition = holePosition -1 kết thúc while /* chèn giá trị tại vị trí trên */ A[holePosition] = valueToInsert kết thúc for Kết thúc hàm
Theo Tutorialspoint
Bài trước: Giải thuật sắp xếp nổi bọt (Bubble Sort)
Bài tiếp: Giải thuật sắp xếp chọn (Selection Sort)
Bạn nên đọc
-
Công thức tính thể tích hình chóp cụt, diện tích xung quanh và toàn phần của hình chóp cụt
-
Công thức tính diện tích hình chóp
-
Công thức tính Diện tích hình vuông, tính Chu vi hình vuông
-
Công thức tính diện tích hình lập phương, thể tích khối lập phương
-
Công thức tính diện tích xung quanh hình nón cụt, diện tích toàn phần hình nón cụt, thể tích hình nón cụt
-
Công thức tính diện tích xung quanh hình nón, diện tích toàn phần hình nón, thể tích hình nón, V nón
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:
Cũ vẫn chất
-

Cách sửa lỗi máy tính Windows tự restart khi nhấn nút shutdown
2 ngày -

Lời chúc sinh nhật cho bản thân, stt viết cho ngày sinh nhật của mình
2 ngày -

Cách kiểm tra lịch sử giao dịch VietinBank
2 ngày -

Hàm TRIM: Hàm bỏ khoảng trắng thừa trong Excel
2 ngày 1 -

Hướng dẫn đổi hình nền trên Windows 11
2 ngày -

Stt thả thính thời tiết nắng, nóng, lạnh, mưa… hay
2 ngày -

C01 là khối gì? C01 gồm những môn nào, ngành nào, trường nào?
2 ngày -

Cách kiểm tra nguồn điện của cổng USB
2 ngày -

Tổng hợp lệnh CCNA Cisco
2 ngày -

Văn khấn bao sái ban thờ thần Tài
2 ngày
Học IT
Lập trình
Microsoft Word 2013
Microsoft Word 2007
Microsoft Excel 2019
Microsoft Excel 2016
Microsoft PowerPoint 2019
Google Sheets
Lập trình Scratch
Bootstrap
Hướng dẫn
Ô tô, Xe máy