Mình cũng chẳng chắc là tối ưu hay chưa, không thì sắp xếp đi!
Bài 3 dùng thuật toán Lùa bò về chuồng liệu có tối ưu không bạn nhỉ?
Naive: O(n^2)
Sắp xếp:
Merge sort / Heap Sort / Quick Sort: $O(n log n)$
Radix Sort: $O(kn)$ (k là số chữ số trung bình)
Dùng cấu trúc dữ liệu:
Map / Set (red-black tree): $O(n log n)$
Hash Table: $O(n)$
Với dữ liệu ~1000 thì sort lại là đủ, và nếu bạn không gặp đen thì hash table là nhanh nhất.