Cho em hỏi là em có một mảng trong input, vậy làm sao để lưu lại vị trí của các phần tử đó.
Tình hình là em làm một bài theo trình tự: nhập mảng, sắp xếp lại mảng, tìm kiếm nhị phân, xuất ra vị trí của giá trị vừa tìm được (vị trí ban đầu khi mảng chưa được sắp xếp ấy).
Những cách em nghĩ:
-
Lưu lại bằng một mảng khác hoàn toàn giống với mảng vừa nhập. Có điều với cách này, cuối cùng cũng phải Linear Search để tìm phần tử => Chậm, với lại nếu vẫn phải Linear thì Binary Search làm gì mắc công
-
Lùa bò: tạo một mảng
copy
có số phần tử bằng với giới hạn đề bài. Với input[x] = y thì copy[y] = x (ngược với thằng ở trên). Khi cần tìm vị trí (index) của giá trị y thì cứ lấy thằng copy[y]. => Thằng này hiện đang là tốt nhất, có điều giới hạn của giá trị phần tử mà cỡ 10 mũ 7, 8 thì cũng phải tạo mảng có 10 mũ 7, 8 phần tử => Tốn space.
Vậy mọi người có cách nào tốt hơn không ạ ? Giúp em cái này.
Cám ơn mọi người