Phân loại bệnh lý
Sếp của bạn đã yêu cầu bạn phát triển một thuật toán sắp xếp để cải thiện hiệu suất của ứng dụng của công ty bạn. Tuy nhiên, khi đã viết đơn, bạn biết rằng bạn khó có thể làm cho nó nhanh hơn đáng kể. Không muốn làm sếp thất vọng, bạn đã quyết định phát triển một thuật toán mới hoạt động thậm chí còn tốt hơn * sắp xếp trên một số bộ dữ liệu nhất định. Tất nhiên, bạn không thể làm rõ rằng thuật toán chỉ hoạt động trong một số trường hợp, vì vậy bạn muốn làm cho nó tối nghĩa nhất có thể.
Mục tiêu của cuộc thi này là viết một thói quen sắp xếp theo ngôn ngữ bạn chọn, thực hiện tốt hơn trên một số bộ dữ liệu nhất định so với các bộ khác, với kết quả lặp lại. Phân loại càng cụ thể xác định tốc độ, càng tốt. Thuật toán phải thực hiện sắp xếp một số loại, do đó, thuật toán phụ thuộc vào dữ liệu đã được sắp xếp hoàn chỉnh (như trong thuật toán không có gì) hoặc thuật toán phụ thuộc vào dữ liệu được sắp xếp hoàn toàn ngược lại, đều không hợp lệ. Thuật toán sắp xếp phải sắp xếp chính xác bất kỳ bộ dữ liệu.
Sau khi trình bày thói quen của bạn, vui lòng bao gồm giải thích lý do tại sao nó chỉ hoạt động trên một số bộ dữ liệu nhất định và bao gồm kiểm tra chạy trên ít nhất một bộ dữ liệu tốt (nhanh) và một bộ dữ liệu xấu (chậm). Vấn đề ở đây là có thể chứng minh với sếp của bạn rằng bạn đã tình cờ tìm ra cách sắp xếp tốt hơn, do đó, nhiều dữ liệu kiểm tra sẽ tốt hơn. Tất nhiên, bạn sẽ chỉ cho sếp xem kết quả kiểm tra từ dữ liệu tốt, do đó lỗ hổng trong dữ liệu kiểm tra bắt buộc không thể quá rõ ràng. Nếu áp dụng cho ngôn ngữ của bạn, vui lòng cho thấy thuật toán của bạn nhanh hơn thuật toán sắp xếp tích hợp trong ngôn ngữ của bạn.
Ví dụ: người ta có thể gửi thuật toán sắp xếp chèn, với dữ liệu tốt là dữ liệu đã được sắp xếp gần và dữ liệu xấu là dữ liệu hoàn toàn ngẫu nhiên, do sắp xếp chèn tiếp cận O (n) trên dữ liệu gần như được sắp xếp. Tuy nhiên, điều này không tốt lắm, vì sếp của tôi có thể sẽ nhận thấy rằng tất cả các dữ liệu thử nghiệm gần như được sắp xếp để bắt đầu.
Đây là một cuộc thi phổ biến , vì vậy câu trả lời có nhiều phiếu nhất sau 7 ngày (21 tháng 5) sẽ thắng.
Nếu không ai đánh bại tôi, tôi muốn gửi câu trả lời wiki cộng đồng, tận dụng các bộ dữ liệu được phân phối thống nhất.