2011-01-09 34 views
10

Phân loại radix có khả năng phân loại dữ liệu phao như ví dụ 0.5, 0.9, 1.02, v.v.?Phân loại Radix, Sắp xếp dữ liệu phao

+0

Tôi muốn thực hiện phân loại radix bằng cách giảm nhóm thành 0 và 1 chỉ có nghĩa là tôi sẽ chuyển đổi mọi đầu vào thành giá trị nhị phân và sau đó tiến hành sắp xếp radix, đây có phải là tùy chọn để tăng tốc độ sắp xếp hay không radix sắp xếp chậm hơn một chút so với trước đây ?. Cảm ơn. – BGV

Trả lời

1

Không nằm ngoài hộp, nhưng bạn có một số tùy chọn. Bạn có thể cụ thể hóa dữ liệu, ví dụ: bằng cách nhân với 100 và làm tròn (để bạn có, ví dụ của bạn ở trên, 5, 9 và 102). Bạn cũng có thể nhóm dữ liệu (nhóm các số theo phạm vi, như trong 0 < x < = 1, 1 < x < = 2), sau đó sắp xếp trong mỗi nhóm.

24

Có, điều đó là có thể. Nó đòi hỏi một pass bổ sung để xử lý chính xác các giá trị âm. Các bài viết của Pierre TerdimanMichael Herf thảo luận chi tiết cách triển khai. Trong ngắn hạn, bạn chuyển đổi phao sang số nguyên không dấu, sắp xếp chúng, và sau đó chuyển đổi chúng trở lại float (điều này là bắt buộc, nếu không giá trị âm sẽ được sắp xếp không chính xác sau các giá trị dương).

Phương pháp của họ có lợi thế là bạn không giới thiệu bất kỳ lỗi nào vào dữ liệu của mình (miễn là bộ xử lý lưu trữ phao theo chuẩn IEEE 754).

+0

+1 cho các bài viết tuyệt vời. –

+1

Đây là một bài viết thú vị khác (http://seven-degrees-of-freedom.blogspot.com/2010/07/question-of-sorts.html) so sánh sắp xếp radix với một phiên bản phối hợp SPU của sắp xếp hợp nhất. Tóm lại, sắp xếp hợp nhất trong khi phức tạp hơn (độ phức tạp là O (n log n) một lần nữa các O (n) của phân loại radix), có thể dễ dàng song song và giành chiến thắng cuối cùng. –

Các vấn đề liên quan