Tải bản đầy đủ (.docx) (1 trang)

Ưu nhược điểm, hiệu suất thuật toán

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (92.12 KB, 1 trang )

1. Bubble sort ­ Thuật toán sắp xếp nổi bọt
Hiệu suất của bubble sort O(n):
­ Tốt nhất: n
­ Tệ nhất: n^2
Ưu điểm: Code ngắn gọn nhất
Nhược điểm: Hiệu suất thấp nhất
2. Insert sort ­ Thuật toán sắp xếp chèn
Hiệu suất của insert sort O(n):
­ Tốt nhất: n
­ Tệ nhất: n^2
Ưu điểm: Chạy nhanh khi mảng nhỏ hay được sắp xếp một phần
Nhược điểm: Hiệu suất thấp
3. Heap sort ­ Thuật toán sắp xếp vun đống
Hiệu suất của heap sort O(n):
­ Tốt nhất: n log n
­ Tệ nhất: n log n
Ưu điểm: Hiệu suất của thuật toán cao
Nhược điểm: Code phức tạp
4. Selection sort ­ Thuật toán sắp xếp chọn
Hiệu suất của selection sort O(n):
­ Tốt nhất: n^2
­ Tệ nhất: n^2
Ưu điểm: Thuật toán chạy nhanh hơn khi mảng sắp xếp một phần
Nhược điểm: Hiệu suất không cao
5. Quick sort ­ Thuật toán sắp xếp nhanh
Hiệu suất của quick sort O(n):
­ Tốt nhất: n log n
­ Tệ nhất: n^2
Ưu điểm: Tuỳ cách chọn pivot mà tốc độ của thuật toán nhanh hay chậm
Nhược điểm: Code khá phức tạp
Nhin chung


­ O(n^2):
Interchange + Selection: Code dễ hiểu nhưng... chậm rì.
(Bubble: Bắt đầu có khả năng tận dụng trật tự có sẵn của mảng, tuy nhiên bọt nổi chậm)
Shaker: Khá hơn Bubble ở chỗ bọt nổi nhanh hơn 100%, nhưng... vẫn còn khá chậm.
Insertion: Mạnh nhất trong các thuật O(n^2), thuận lợi sắp xếp mảng nhỏ < 100 phần tử.
­ O(n*logn):
Heap: Dùng để minh họa về heap thì tốt, tuy nhiên không lợi về cache. Code rối.
(Merge: Code đỡ rối hơn Heap, nhưng bắt buộc dùng mảng phụ. Nếu thích ổn định và dư mem thì 
dùng)
Quick: Độ phức tạp ở trường hợp xấu nhất là O(n^2), tuy nhiên do lợi về cache (và code khéo chút 
thì nó sáng) nên tính ra tốc độ trung bình vẫn ăn đứt Heap và Merge.



×