Giải pháp của Zach rất tốt.
Tuy nhiên, tôi đã tự hỏi tại sao cần phải sắp xếp. Nếu bạn có hoán vị của các chỉ mục, hãy sử dụng các giá trị như một con trỏ tới mảng cũ.
Điều này có thể loại bỏ nhu cầu sắp xếp mảng ở vị trí đầu tiên. Đây không phải là một giải pháp có thể được sử dụng trong mọi trường hợp, nhưng nó sẽ hoạt động tốt trong hầu hết các trường hợp.
Ví dụ:
a = [45,89,22,31,23,76];
b = [5,3,2,1,0,4]
Bây giờ nếu bạn muốn lop qua các giá trị trong một, bạn có thể làm điều gì đó tương tự (pseudo-code):
for i=0 to 4
{
process(a[i]);
}
Nếu bạn muốn lặp qua các giá trị theo thứ tự mới, làm:
for i=0 to 4
{
process(a[b[i]]);
}
Như đã đề cập đến tai lier, soluion này có thể là đủ trong nhiều trường hợp, nhưng có thể không trong một số trường hợp khác. Đối với các trường hợp khác, bạn có thể sử dụng giải pháp của Zach.Nhưng đối với những trường hợp mà giải pháp này có thể được sử dụng, nó là tốt hơn bởi vì không có phân loại là cần thiết cả.
Câu hỏi điển hình cho cuộc phỏng vấn kỹ thuật. – Frank
Tốt hơn để biết điều đó :) – tunnuz