Сортировка вектора числовых строк в порядке возрастания
Учитывая вектор числовых строк arr[] , задача состоит в том, чтобы отсортировать данный вектор числовых строк в порядке возрастания.
Примеры:
Input: arr[] = {“120000”, “2”, “33”}
Output: {“2”, “33”, “120000”}Input: arr[] = {“120”, “2”, “3”}
Output: {“2”, “3”, “120”}
Подход: функция sort() в C++ STL способна сортировать вектор строк тогда и только тогда, когда он содержит один числовой символ, например, {'1', ' '}, но для сортировки числового вектора строки с несколькими символами, например, {'12', '56', '14' } нужно написать собственный компаратор внутри функции sort(). Функция компаратора для сортировки в порядке возрастания логики выглядит следующим образом:
Let’s build a comparator function considering the two cases given below:
- Case 1: If the length of the string is not the same then place a smaller length string in first place for example, {’12’, ‘2’} place ‘2’ before ’12’ as ‘2’ is smaller than ’12’.
- Case 2: If length is the same then place the string which is numerically smaller for example, ‘1’, ‘2’ place ‘1’ before ‘2’.
Ниже приведена программа на C++ для реализации описанного выше подхода:
Временная сложность: O (N * log N)
Вспомогательное пространство: O(1)