BÀI MỚI NHẤT
Saturday, September 24, 2016

Insert Sort

Cấu trúc dữ liệu và giải thuật - Sắp xếp

Đề bài: Viết chương trình sắp xếp các phần tử trong mảng 1 chiều bằng thuật toán Insert Sort.


Insert Sort

Nhận xét:

Bất luận trình trạng cụ thể của dãy a[] đã cho ra sao, ta cũng luôn nhìn thấy một đoạn con của dãy này đã có trật tự
Dãy hay một đoạn con  chỉ gồm 1 phần tử duy nhất xem như đã có trật tự.

Ý tưởng:

ý tưởng 2

Dãy a[] đã cho a(1), a(2), …a(n) có đoạn con chỉ gồm 1 phần tử a(1) đã có trật tự (nhận xét trên). Bây giờ ta chỉ việc thêm a(2) vào đoạn con a(1) ta được a(1)a(2) đã được sắp xếp; tiếp điếm thêm a(3) vào đoạn a(1)a(2). Làm đến khi không còn phần tử nào cần chèn thì kết thúc. Kết quả: ta sẽ thu được 1 dãy tăng (giảm)

Các bước thực hiện:

  • Khởi tạo “vtchen=i-1”;
  • Khởi trị cho phần tử cần chèn là x=a[j]
  • Vòng lặp trong: thực hiện lặp các việc sau khi “vtchen>=0” và phần tử cần chèn x<a[vtchen]
  • Đẩy các phần tử sang phải một vị trí để tìm chỗ thích hợp chèn x vào đoạn con đã có trật tự cần sử dụng phép gán:  a[vtchen+1]=a[vtchen]
  • Sau mỗi lần thực hiện Bước 4, giảm vị trí chèn  (vtchen=vtchen-1)
  • Chèn x vào vị trí đã tìm được thích hợp. (a[vtchen+1]=x)
  • Vòng lặp trong kết thúc khi vtchen vượt ngoài phạm vi dãy và “x=a[vtchen]”

Cài đặt:



Kết quả khi chạy chương trình:

thuật toán Insert Sort

Độ phức tạp của thuật toán:

  • Tốt nhất: O(n-1)
  • Xấu nhất: O(n(n-1)/2)
Được viết bởi Đinh Quang Trưởng