5.9 Lịch sử cần chú ý và phát hiện thêm
Trong chương sau chúng tôi sẽ thảo luận một số khái quát phân loại. Chương 6 thảo luận về hàng đợi ưu tiên, cấu trúc dữ liệu hỗ trợ chèn và loại bỏ các
phần tử nhỏ nhất. Đặc biệt, chèn n phần tử tiếp theo xóa lặp đi lặp lại của
số tiền tối thiểu để phân loại. Hàng đợi ưu tiên nhanh chóng cho kết quả khá tốt trong phân loại al-
các thuật toán. Một khái quát hơn nữa là những cây tìm kiếm được giới thiệu trong mục 7, một dữ liệu
cấu trúc cho việc duy trì một danh sách được sắp xếp cho phép tìm kiếm, chèn, và loại bỏ
các yếu tố trong thời gian logarit.
Chúng ta đã thấy một số thuật toán ngẫu nhiên đơn giản, thanh lịch, và hiệu quả trong này
chương. Một câu hỏi thú vị là liệu các thuật toán có thể được thay thế bởi de-
những người terministic. Blum et al. [26] mô tả một thuật toán trung bình lựa chọn xác định
tương tự như các thuật toán ngẫu nhiên từ Phần 5.5. Thuật toán này làm cho
lựa chọn trục đáng tin cậy hơn bằng cách sử dụng đệ quy: Nó chia tách các đầu vào thiết lập thành các tập con của năm
yếu tố, xác định trung bình của mỗi nhóm bằng cách phân loại các năm yếu tố tập hợp con,
sau đó xác định trung vị của n / 5 trung vị bằng cách gọi các thuật toán đệ quy ,
và cuối cùng là sử dụng trung bình của các trung vị là splitter. Các thuật toán kết quả có
tuyến tính thời gian tồi tệ nhất trường hợp thực hiện (chúng tôi mời người đọc để thiết lập một sự tái phát cho
thời gian chạy và để cho thấy rằng nó có một giải pháp tuyến tính), nhưng các yếu tố không đổi lớn
làm cho các thuật toán thực tế.
Có nhiều cách khá thực tế để giảm số lượng dự kiến so sánh lại
quired bởi Sắp xếp nhanh. Bằng cách sử dụng trung bình của ba yếu tố ngẫu nhiên mang lại một thuật toán
với khoảng 1.188n log n so sánh. Trung bình của ba trung vị của ba phần tử 5.9 Lịch sử cần chú ý và phát hiện thêm 125 tập con mang này xuống ≈ 1.094n log n [20]. Số lượng so sánh có thể được giảm hơn nữa bằng cách làm cho số lượng các yếu tố xem xét để lựa chọn trục phụ thuộc vào kích thước của bài toán con. Martinez và Roura [119] cho thấy rằng đối với một bài toán con √ kích thước m, trung bình của Θ (m) các yếu tố là một lựa chọn tốt cho các trục. Với phương pháp này, tổng số so sánh sẽ trở thành (1 + o (1)) n log n, tức là phù hợp với cận dưới của n log n - O (n) lên đến giảm số hạng bậc. Điều thú vị là, tối ưu hóa trên có thể phản tác dụng. Mặc dù hướng dẫn ít là cựu ecuted, nó trở nên không thể dự đoán khi bên trong trong khi-vòng của Sắp xếp nhanh được hủy bỏ. Từ hiện đại, bộ vi xử lý sâu sắc pipelined chỉ làm việc hiệu quả khi họ có thể dự đoán các hướng dẫn của các ngành thực hiện, ảnh hưởng thực về hiệu suất thậm chí có thể là tiêu cực [? ]. Vì vậy, [157] phát triển một so sánh dựa trên thuật toán phân loại , có thể tránh lệnh rẽ nhánh có điều kiện. Một biến thể xác định thú vị của Sắp xếp nhanh là tỷ lệ-mở rộng loại [39]. Một thuật toán phân loại cổ điển của một số di tích lịch sử là Shell loại [98, 163], một sự tổng quát của sắp xếp chèn, mà đạt hiệu quả bằng cách so sánh cũng nonadja- yếu tố phần trăm. Nó vẫn còn mở cho dù một số biến thể của Shellsort đạt được O (n log n) thời gian chạy trung bình [98, 120]. Có một số kỹ thuật thú vị để cải thiện bên ngoài Multiway hợp nhất- loại. Tuyết cày Heuristic [109, mục 5.4.1] hình chạy của dự kiến kích thước 2M sử dụng một bộ nhớ nhanh có kích thước M: Bất cứ khi nào một phần tử được lựa chọn từ các liên hàng đợi ưu tiên nal và ghi vào bộ đệm đầu ra và các yếu tố tiếp theo trong trong- đặt đệm có thể kéo dài thời gian hiện tại, chúng tôi thêm nó vào hàng đợi ưu tiên. Ngoài ra, việc sử dụng cây giải đấu thay vì hàng đợi ưu tiên chung dẫn đến một cải tiến hơn nữa hợp nhất Multiway [109]. song song có thể được sử dụng để cải thiện phân loại tập dữ liệu rất lớn, hoặc trong các hình thức của một uni-bộ vi xử lý sử dụng đĩa song song hoặc trong các hình thức của một bộ vi xử lý đa. Multiway mergesort và phân phối loại có thể được điều chỉnh để đĩa song song D của phân chia, tức là, bất kỳ khối D liên tiếp trong một hoạt động hoặc nhóm được phân bố đều trên các đĩa. Sử dụng ngẫu nhiên, ý tưởng này có thể được phát triển thành các thuật toán gần như tối ưu cũng chồng chéo I / O và tính toán [51]. Các thuật toán mẫu loại Phần 5.7 có thể được thích nghi với máy song song [25] và kết quả trong một bộ sắp xếp song song hiệu quả. Chúng ta đã thấy các thuật toán thời gian tuyến tính cho các đầu vào có cấu trúc cao. Một gen-khá mô hình tổng quát, mà n log n thấp hơn ràng buộc không nắm giữ, là mô hình từ. Trong mô hình này, các phím là các số nguyên đó phù hợp với một tế bào bộ nhớ duy nhất, nói 32 hoặc 64 bit phím, và các hoạt động tiêu chuẩn chữ (Bitwise-và, trên bit hoặc, bổ sung, ...) có sẵn trong thời gian liên tục. Trong mô hình này, phân loại có thể xác định trong √ thời gian O (n log log n) [9]. Với ngẫu nhiên thậm chí O n log log n có thể [196]. flash loại [141] là một thuật toán phân phối dựa trên hoạt động gần như tại chỗ. Tập thể dục 107 (Unix kiểm tra chính tả). Giả sử bạn có một từ điển bao gồm một trình tự sắp xếp các từ viết đúng chính tả. Để kiểm tra một văn bản, chuyển đổi nó thành một chuỗi các từ ngữ, sắp xếp nó, quét văn bản và từ điển cùng một lúc, và đầu ra từ trong văn bản mà không xuất hiện trong từ điển. Thực hiện kiểm tra chính tả này sử dụng unix công cụ trong một số ít các dòng mã. Bạn có thể làm điều đó trong một dòng?
đang được dịch, vui lòng đợi..
