Tôi có một câu hỏi có vẻ rất cơ bản, nhưng trong ngữ cảnh "mọi dấu tích CPU" (đây là một phần của thuật toán lớn hơn được sử dụng trên các siêu máy tính).C++: Cách nhanh nhất để sắp xếp danh sách số và chỉ mục của chúng
Vấn đề khá đơn giản: cách nhanh nhất để sắp xếp danh sách các số int dài chưa ký và chỉ mục gốc của chúng là gì? (. Lúc đầu, các unsigned long int số dài đang ở trong một trật tự hoàn toàn ngẫu nhiên)
Example :
Before
Numbers: 32 91 11 72
Indexes: 0 1 2 3
After
Numbers: 11 32 72 91
Indexes: 2 0 3 1
By "Cách nhanh nhất", tôi có nghĩa là: những gì thuật toán sử dụng: std :: sort, C qsort, hay cách khác thuật toán sắp xếp có sẵn trên web? Những gì container để sử dụng (mảng C, std :: vector, std :: map ...)? Làm thế nào để sắp xếp các chỉ mục cùng một lúc (sử dụng cấu trúc, std :: pair, std :: map ...)?
Cảm ơn bạn rất nhiều!
CHỈNH SỬA: có bao nhiêu phần tử cần sắp xếp? -> thường là 4Go số
Có bao nhiêu yếu tố để sắp xếp (tối đa)? –
Không nên có bất kỳ sự khác biệt giữa một mảng C và std :: vector, cũng không phải giữa một cấu trúc và std :: cặp. –