Сортировка векторов по размеру: различные методы и примеры кода

Сортировка векторов по их размерам — распространенная задача в программировании. В этой статье мы рассмотрим несколько методов выполнения этой задачи, сопровождаемые примерами кода на популярных языках программирования. К концу этой статьи вы получите четкое представление о различных методах сортировки и сможете выбрать тот, который соответствует вашим потребностям.

Методы и примеры кода:

  1. Использование пользовательского компаратора (C++):
    Один из способов сортировки векторов по размеру — использование пользовательской функции компаратора. Функция сравнения сравнит размеры внутренних векторов и вернет true или false соответственно. Вот пример на C++:
#include <vector>
#include <algorithm>
bool compare(const std::vector<int>& a, const std::vector<int>& b) {
    return a.size() < b.size();
}
int main() {
    std::vector<std::vector<int>> vecOfVecs = { {1, 2, 3}, {4, 5}, {6}, {7, 8, 9, 10} };
    std::sort(vecOfVecs.begin(), vecOfVecs.end(), compare);
    // Output the sorted vector of vectors
    for (const auto& vec : vecOfVecs) {
        for (const auto& elem : vec) {
            std::cout << elem << " ";
        }
        std::cout << std::endl;
    }
    return 0;
}
  1. Использование лямбда-функции (Python):
    В Python мы можем использовать лямбда-функцию в качестве ключа к функции sortedдля выполнения сортировки на основе размеров векторов. Вот пример:
vec_of_vecs = [[1, 2, 3], [4, 5], [6], [7, 8, 9, 10]]
sorted_vec_of_vecs = sorted(vec_of_vecs, key=lambda x: len(x))
# Output the sorted vector of vectors
for vec in sorted_vec_of_vecs:
    print(vec)
  1. Использование LINQ (C#):
    В C# мы можем использовать LINQ (Language Integrated Query) для сортировки векторов по их размерам. Вот пример:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
    static void Main()
    {
        List<List<int>> vecOfVecs = new List<List<int>>()
        {
            new List<int> {1, 2, 3},
            new List<int> {4, 5},
            new List<int> {6},
            new List<int> {7, 8, 9, 10}
        };
        var sortedVecOfVecs = vecOfVecs.OrderBy(vec => vec.Count).ToList();
        // Output the sorted vector of vectors
        foreach (var vec in sortedVecOfVecs)
        {
            foreach (var elem in vec)
            {
                Console.Write(elem + " ");
            }
            Console.WriteLine();
        }
    }
}