Hai phần của TCS là thuật toán và độ phức tạp. Tôi sẽ nói một cách đơn giản rằng các thuật toán là nghiên cứu về giới hạn trên, cho thấy rằng bạn có thể làm một cái gì đó (với các tài nguyên bị hạn chế) và sự phức tạp là về việc cho thấy rằng bạn không thể làm điều đó mà không cần một số tài nguyên tối thiểu.
Vì vậy, thường một vấn đề thuật toán được nêu trong một mô hình quyết định để đặt nó trong một lớp phức tạp.
Nhưng một điều luôn làm tôi bận tâm là một số thuật toán cơ bản không bao giờ được đề cập hoàn toàn là thuộc về một lớp cụ thể. Một ví dụ là (so sánh) sắp xếp. Hãy thử như tôi có thể, một lớp có liên quan dường như quá thiếu (thực sự, chỉ là kiểm tra trong logspace rằng kết quả đã được sắp xếp? Điều đó có vẻ quá yếu, hoặc tôi không nhận được phiên bản quyết định đúng).
Lớp phức tạp tốt nhất / phù hợp nhất / hữu ích nhất mà sắp xếp so sánh nằm ở đâu?