Сортировка строк по длине на C++

C++Beginner
Практиковаться сейчас

Введение

В этом практическом занятии вы научитесь сортировать строки по длине с использованием собственного метода сортировки на языке программирования C++. Также вы узнаете, как реализовать собственную логику сортировки и упорядочить элементы неупорядоченного набора в определенном порядке.

Создайте новый файл

Первым шагом является создание нового файла. Откройте терминал и перейдите в каталог ~/project. Создайте новый файл с именем main.cpp с использованием предпочитаемого текстового редактора.

cd ~/project
touch main.cpp

Напишите код

Добавьте следующий код в файл main.cpp. Этот код отсортирует набор строк по их длине.

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

//Возвращает true, если длина первой строки больше, чем у второй
bool cmp(string x, string y)
{
    int n = x.length();
    int m = y.length();

    if (n > m)
        return true;
    else
        return false;
}

//Функция для вывода элементов неупорядоченного набора с использованием итератора
void show(unordered_set<string> s)
{
    //Объявление итератора для перебора неупорядоченного набора
    unordered_set<string>::iterator i;

    for (i = s.begin(); i!= s.end(); i++)
    {
        cout << *i << "     "; //Доступ к элементам неупорядоченного набора с использованием *, так как i хранит адрес каждого элемента
    }

    cout << endl;
}

int main()
{
    cout << "\n\nДобро пожаловать в LabEx :-) \n\n\n";
    cout << " =====  Программа для демонстрации сортировки строк по длине на CPP  ===== \n\n\n\n";

    cout << " *** Неупорядоченный набор автоматически удаляет дубликаты элементов и сохраняет случайный порядок. *** \n\n";

    cout << " *** Этот случайный порядок зависит от хэш-функции, которая используется внутри. *** \n\n";

    cout << " *** Элементы неупорядоченного набора можно отсортировать, скопировав их в вектор. *** \n\n";

    //Объявление неупорядоченного набора (неупорядоченный набор строк)
    unordered_set<string> s;

    //Заполнение элементов с использованием метода insert()
    cout << "\n\nЗаполнение неупорядоченного набора строками в случайном порядке. " //В отличие от Set, это не автоматически сортируется

    s.insert("Study");
    s.insert("Tonight");
    s.insert("Aditya");
    s.insert("Abhishek");
    s.insert("C++");
    s.insert("Hi");

    cout << "\n\nЭлементы неупорядоченного набора перед сортировкой:\n ";
    show(s);

    //Объявление вектора и инициализация его элементами неупорядоченного набора
    vector<string> v(s.begin(), s.end());

    //Сортировка элементов вектора по убыванию длины с использованием пользовательского компаратора
    sort(v.begin(), v.end(), cmp);

    cout << "\n\nЭлементы неупорядоченного набора после сортировки по убыванию длины с использованием пользовательского компаратора:\n";

    //Объявление итератора для перебора вектора
    vector<string>::iterator it;

    for (it = v.begin(); it!= v.end(); it++)
    {
        cout << *it << "     "; //Доступ к элементам вектора с использованием *, так как i хранит адрес каждого элемента
    }

    cout << "\n\n\n";

    return 0;
}

Компилируйте и запустите код

Для компиляции этого кода перейдите в каталог ~/project в терминале и запустите следующую команду:

g++ main.cpp -o main && ./main

Вывод покажет отсортированный список строк.

Резюме

В этом практическом занятии вы узнали, как сортировать неупорядоченный набор строк, написав собственный метод сортировки на языке программирования C++. Также вы узнали, как реализовать собственную логику сортировки и упорядочить элементы неупорядоченного набора в определенном порядке. Эти знания могут быть применены в широком спектре программных проектов, помогая вам создавать эффективный и легко читаемый код.