Tôi có nhiều mục dữ liệu có chứa các thông tin sau: id_number name1 ngày name2C++ dữ liệu phân loại đôi với nhiều yếu tố
Có thể đặt điều này vào một cấu trúc như thế này:
struct entry {
int id_number;
string name1;
int date;
string name2;
}
Trong dữ liệu của tôi, tôi có nhiều mục như vậy và tôi muốn sắp xếp. Trước tiên, tôi muốn sắp xếp theo thứ tự bảng chữ cái dựa trên tên1, sau đó sắp xếp theo ngày. Tuy nhiên, sắp xếp theo ngày là tập con của sắp xếp theo thứ tự bảng chữ cái, ví dụ: nếu tôi có hai mục nhập có cùng tên1, thì tôi muốn sắp xếp các mục nhập đó theo ngày. Hơn nữa, khi tôi sắp xếp, tôi muốn các yếu tố của mục nhập ở lại với nhau, vì vậy tất cả bốn giá trị đi cùng nhau.
Câu hỏi của tôi như sau:
1) loại cấu trúc dữ liệu tôi nên sử dụng để lưu dữ liệu này để tôi có thể giữ cho các bộ bốn yếu tố với nhau khi tôi loại vì bất kỳ mục một trong số họ?
2) Cách nhanh nhất để thực hiện việc sắp xếp này (về mặt thời gian để viết mã) là gì. Lý tưởng nhất, tôi muốn sử dụng một cái gì đó giống như sắp xếp trong thuật toán.h vì nó đã được xây dựng trong.
3) STL có một số cấu trúc dữ liệu tích hợp có thể xử lý phân loại kép mà tôi mô tả một cách hiệu quả?
Anh ấy cần một loại ổn định hoặc điều này sẽ không hoạt động. Tôi sẽ từ bỏ câu trả lời của riêng tôi vì nó sẽ giống như câu trả lời của bạn, ngoại trừ những nhận xét về cách std :: stable_sort thực sự rất chậm và việc thực hiện sắp xếp hợp nhất sẽ tốt hơn nhiều vì trường hợp tốt nhất và xấu nhất là n log n trong khi std :: stable_sort giống như ... n log n^2 hoặc cái gì đó ngu ngốc như thế. Vì vậy, tôi muốn cập nhật câu trả lời để giải quyết điều đó, chủ yếu. Tôi sẽ bầu bạn nếu bạn làm. Hoặc tôi sẽ giải thích lý thuyết trong câu trả lời của riêng tôi ... –
@OrgnlDave: không phải như vậy. Bạn cần một sắp xếp ổn định * chỉ * nếu bạn sắp xếp * riêng * trên hai trường. Tức là, bạn sắp xếp đầu tiên theo ngày, sau đó sắp xếp theo tên riêng và dự định ngày vẫn giữ nguyên. Điều này đang làm cả hai so sánh cùng một lúc, do đó, một loại duy nhất (có thể không ổn định) sắp xếp theo cả tên và ngày. –
xin lỗi nhưng so sánh đó sẽ không cung cấp một loại ổn định –