Tôi không chắc chắn những gì ông có trong tâm trí.
Nếu bạn chỉ muốn tìm số một lần và bạn không có đảm bảo về việc liệu mảng có được sắp xếp hay không, thì tôi không nghĩ bạn có thể đánh bại tìm kiếm tuyến tính. Trung bình bạn sẽ cần phải tìm kiếm nửa chừng trước khi bạn tìm thấy giá trị, nghĩa là thời gian chạy dự kiến O (N); khi sắp xếp, bạn phải chạm vào từng giá trị đơn lẻ ít nhất một lần và có thể nhiều hơn thế, nghĩa là thời gian chạy dự kiến O (N log N).
Nhưng nếu bạn cần phải tìm nhiều giá trị thì thời gian đã phân loại sẽ trả nhanh chóng. Với một mảng được sắp xếp, bạn có thể tìm kiếm nhị phân trong thời gian O (log N), vì vậy chắc chắn bằng tìm kiếm thứ ba bạn đang đi trước nếu bạn đã đầu tư thời gian để sắp xếp.
Bạn có thể làm tốt hơn nữa nếu bạn được phép xây dựng các cấu trúc dữ liệu khác nhau để giúp giải quyết vấn đề. Bạn có thể xây dựng một số loại chỉ mục, chẳng hạn như bảng băm; nhưng cấu trúc dữ liệu vô địch cho loại vấn đề này có lẽ sẽ là một số loại cấu trúc cây. Sau đó, bạn có thể chèn các giá trị mới vào cây nhanh hơn bạn có thể chắp thêm các giá trị mới và sắp xếp lại mảng, và tra cứu vẫn sẽ là O (log N) để tìm bất kỳ giá trị nào. Có nhiều loại cây khác nhau: cây nhị phân, cây B, trie, v.v.
Nhưng như @Hot Licks cho biết, bảng băm thường được sử dụng cho loại điều này và nó khá rẻ để cập nhật: bạn chỉ cần thêm một giá trị vào mảng chính và cập nhật bảng băm để trỏ đến giá trị mới. Và một bảng băm là rất gần với O (1) thời gian, mà bạn không thể đánh bại. (Bảng băm là O (1) nếu không có xung đột băm, giả sử một thuật toán băm tốt và bảng băm đủ lớn sẽ hầu như không có xung đột. Tôi nghĩ bạn có thể nói rằng bảng băm là O (N) trong đó N là số lần va chạm băm trung bình trên mỗi "thùng". Nếu tôi sai về điều đó tôi mong đợi được sửa chữa rất nhanh; đây là StackOverflow!)
Nói chung, để tìm kiếm một tập hợp lớn, mọi thứ sử dụng một số loại bảng băm. –
[Tìm nhanh hơn, tra cứu băm hoặc tìm kiếm nhị phân?] (Http://stackoverflow.com/questions/360040/which-is-faster-hash-lookup-or-binary-search) – Josh
@Josh - Câu hỏi lừa. Tìm kiếm nhị phân nhanh hơn nếu mọi thứ đều được sắp xếp độc đáo và bạn sẽ không bao giờ sửa đổi tập hợp được tìm kiếm. Nhưng đó không phải là cuộc sống thực. Trong cuộc sống thực, bảng băm hầu như luôn thắng. –