Предположим, мне дали два массива. Для ex-процесса с их временем прибытия и временем окончания. Я хочу, чтобы отсортировать его на основе времени окончания. На основе Finish Time, время прибытия также необходимо отсортировать. Я могу использовать сортировку или сортировку пузырьков для этой цели. Но Есть ли какой-либо STL для этой цели? Могу ли я использовать функцию sort() с некоторыми изменениями?Сортировка двух массивов
-1
A
ответ
0
Один из способов сделать это было бы создать вектор (конец, начало) пар (в этом порядке - объяснение ниже), разбирайтесь, а затем разделить пары отсортированного выхода:
#include <utility> // For pair
#include <algorithm> // For sort
std::vector<std::pair<size_t, size_t>> intervals;
for(size_t i = 0; i < start.size(); ++i)
intervals.push_back(std::make_pair(end[i], start[i]));
std::sort(std::begin(intervals), std::end(intervals)); // (*)
start.clear();
end.clear();
for(size_t i = 0; i < start.size(); ++i)
{
end[i] = intervals[i].first;
start[i] = intervals[i].second;
}
Обратите внимание на строку с комментарием (*)
. STL pairs' order is lexicographic, которые мы используем здесь (сортировка пар будет сортироваться по first
s бесплатно).
+0
Спасибо, @ Jarod42! исправленный. –
0
Вы можете передать функтор в std::sort
или предоставить operator <
для данных:
struct MyClass
{
std::size_t arrivalTime;
std::size_t finishTime;
};
std::vector<MyClass> myClasses = //..
std::sort(myClasses .begin(), myClasses.end(),
[](const MyClass& lhs, const MyClass& rhs) {
return std::tie(lhs.finishTime, lhs.arrivalTime)
< std::tie(rhs.finishTime, rhs.arrivalTime);
});
или просто
bool operator< (const MyClass& lhs, const MyClass& rhs)
{
return std::tie(lhs.finishTime, lhs.arrivalTime)
< std::tie(rhs.finishTime, rhs.arrivalTime);
}
и позже:
std::sort(myClasses .begin(), myClasses.end());
Смежные вопросы
- 1. Сочетание двух массивов и сортировка массивов Swift
- 2. Сортировка двух массивов в C++
- 3. Соответствующая сортировка двух 3D-массивов
- 4. Сортировка и слияние двух массивов эффективным способом?
- 5. C++ Сортировка «процента» двух парных целых массивов
- 6. Слияние двух массивов, затем сортировка их
- 7. объединение и сортировка двух массивов Java?
- 8. Сортировка двух соответствующих массивов в PHP
- 9. Сортировка/пересечение двух массивов на две новые.
- 10. Сортировка двух массивов разных типов в один
- 11. Сочетание/Сортировка двух таблиц/массивов таблицы/массивов/списков
- 12. Сортировка двух массивов (значений, ключей), а затем сортировка ключей
- 13. Сортировка массивов (сортировка пузырьков)
- 14. Сортировка и удаление массивов массивов
- 15. Сортировка массива массивов целочисленных массивов
- 16. Сортировка массивов, не простая сортировка
- 17. Сортировка массивов в Groovy
- 18. Bucket Сортировка с помощью указателей и двух массивов структур
- 19. Сортировка двух массивов, в зависимости от одного массива
- 20. PHP - Сортировка двух массивов одним и тем же способом
- 21. Задачи программы на C# [Сортировка двух массивов в один]
- 22. Сортировка двух массивов разных типов данных в Java
- 23. специальная сортировка двух массивов в matlab со сравнением
- 24. Сортировка многомерных массивов
- 25. Сортировка нескольких массивов JavaScript
- 26. Сортировка массивов гиперссылок
- 27. Сортировка массивов и индексов
- 28. Сортировка списка массивов?
- 29. Сортировка массивов и хэшей
- 30. Сортировка и слияние массивов
Вы хотите использовать стабильная сортировка: http://en.wikipedia.org/wiki/Sorting_algorithm#Stability. Также покажите код или, по крайней мере, псевдокод. – Drakes
возможно дубликат. http://stackoverflow.com/questions/3909272/sorting-two-corresponding-arrays. –