LTV domain - hosting provider

Cộng Đồng Lập Trình Việt » Cơ sở lập trình » Cấu trúc dữ liệu và giải thuật » Thuật toán Sắp xếp Shell (Shell sort)

Bảng tin "Lập Trình Việt"
THÔNG BÁO MỚI NHẤT

TUYỂN MOD - Mời Bạn Tham Gia Thành Viên BQT Cộng Đồng Lập Trình Việt

CUỘC THI LẬP TRÌNH ONLINE TỔ CHỨC VÀO THỨ BẢY 7H TỐI HẰNG TUẦN

KẾT QUẢ CUỘC THI LẬP TRÌNH ONLINE


Gởi Ðề Tài Mới  Trả lời
Old 07-02-2010, 12:22 PM   #1 (permalink)
 
Avatar của thucnq
 
Status: If(Programming == "Art") then Programmer = "Artist";
Tham gia ngày: Feb 2009
Tuổi: 25
Bài gởi: 327
Thanks: 90
Thanked 79 Times in 62 Posts
a60 Thuật toán Sắp xếp Shell (Shell sort)

Được phát minh bởi Donald Shell vào năm 1959, Shell sort là thuật toán hiệu quả nhất trong nhóm các thuật toán sắp xếp có độ phức tạp O(n2). Đương nhiên, Shell sort cũng phức tạp nhất trong các thuật giải thuộc lớp này.


Shell sort là sự cải tiến của Insertion sort dựa vào hai nhận xét sau đây:
  • Insertion sort sẽ rất hiệu quả nếu dữ liệu đầu vào hầu như đã được sắp xếp (đã được xếp trong từng khoảng cục bộ).
  • Insertion sort hoạt động kém hiệu quả vì nó di chuyển các giá trị phần tử mỗ i lần chỉ một vị trí.
Shell sort là môt thuật toán sắp xếp với số gia giãm dần, thường được biết đến như là "comb sort" dành cho những khối chương trình hỗn độn chưa được làm sạch. Thuật toán tạo ra nhiều luồng chạy duyệt qua danh sách dữ liệu, và mỗi lần sắp xếp một số trong những tập dữ liệu được định kích cở như nhau (tập phân đoạn được tách ra từ tập dữ liệu ban đầu) dùng Insertion sort. Sau mỗi lần duyệt qua hết bộ dữ liệu thông qua các phân đoạn (có kích thước giãm dần >= 1) , kích thước của tập được sắp xếp trở nên lớn hơn, cho tới khi nó chứa toàn bộ danh sách dữ liệu. (Chú ý rằng do kích thước của tập tăng lên, số lượng tập dữ liệu cần được sắp xếp sẽ giảm dần) Điều này làm cho Insertion sort đạt tới trường hợp tối ưu nhất, chạy mỗi vòng lặp với độ phức tạp tiến tới O(n).

Các phần tử chứa trong mỗi tập phân đoạn thì không liền kề nhau - cụ thể hơn, nếu có i tập phân đoạn thì mỗi tập chứa các phần tử thứ i liên tiếp kể từ điểm xuất phát của tập đó. Ví dụ, nếu có 3 tập phân đoạn thì tập đầu tiên sẽ chứa những phần tử tại các vị trí 1, 4, 7 và cứ như thế tiếp tục. Tập thứ hai sẽ chứa những phần tử tại các vị trí 2, 5, 8, và cứ thế tiếp tục về sau; trong khi tập thứ ba sẽ chứa các phần tử ở vị trí 3, 6, 9, và tương tự kế đó.

Kích thước của tập dữ liệu được sử dụng trong mỗi lần duyệt dữ liệu có ảnh hưỡng lớn tới hiệu quả của việc sắp xếp. Vài nhà nghiên cứu hàng đầu về khoa học máy tính, trong đó có cả Donald Knuth và Robert Sedgewick đã phát triển những phiên bản phức tạp hơn cho shell sort nhằm nâng cao hiệu quả tính toán bằng việc xử lý một cách cẩn thận những tập phân đoạn sao cho có kích thước tốt nhất để dùng cho danh sách dữ liệu được cho.



Binh Nguyen - Bioz - ieev.org

Copy this link and send via YM,MSN,AOL,ICQ.....


thucnq is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Trả Lời Với Trích Dẫn

5 Chủ đề mới nhất của thucnq
Chủ đề Chuyên mục Người gởi sau cùng Trả lời Lần đọc Bài mới gửi
Ebook Tạo web động với PHP và Mysql ví dụ cụ thể... Bài tập lớn - Đồ án - ebook PHP thucnq 0 665 25-05-2010 10:14 AM
pascal programming guide.pdf tài liệu học pascal... Bài tập lớn - Đồ án - ebook Pascal/Delphi thucnq 0 188 25-05-2010 10:05 AM
4 Bài tập và lời giải thực hành ASP (hướng dẫn... Bài tập - Thực hành ASP/ASP.NET thucnq 0 641 25-05-2010 09:28 AM
Bài tập thực hành html javascript asp Bài tập - Thực hành ASP/ASP.NET thucnq 0 461 25-05-2010 09:20 AM
Bài tập lớn môn cấu trúc dữ liệu và giải thuật Cấu trúc dữ liệu và giải thuật thucnq 0 557 25-05-2010 08:45 AM

Gởi Ðề Tài Mới  Trả lời

Bookmarks

Tag
sắp, shell, sort, thuật, toán, xếp


Ðang đọc: 1 (0 thành viên và 1 khách)
 
Ðiều Chỉnh

Quuyền Hạn Của Bạn
Bạnkhông thể tạo chủ đề
You may not post replies
You may not post attachments
Bạn không thể sửa bài viết của bạn

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt
Trackbacks are Mở
Pingbacks are Mở
Refbacks are Mở




LTV domain - hosting provider
Múi giờ GMT +7. Hiện tại là 06:16 PM.
Powered by: vBulletin v3.x.x Copyright ©2000-2010, Jelsoft Enterprises Ltd. Bản quyền thuộc LTV Co., Ltd