Рубрики

std :: sort () в C ++ STL

Мы обсуждали qsort () в C. C ++ STL предоставляет аналогичную функцию sort, которая сортирует вектор или массив (элементы с произвольным доступом). Ниже приведена простая программа, демонстрирующая работу sort ().

// C ++ программа для демонстрации поведения по умолчанию
// сортировать () в STL.
#include <bits/stdc++.h>

using namespace std;

  

int main()

{

    int arr[] = {1, 5, 8, 9, 6, 7, 3, 4, 2, 0};

    int n = sizeof(arr)/sizeof(arr[0]);

  

    sort(arr, arr+n);

  

    cout << "\nArray after sorting using "

         "default sort is : \n";

    for (int i = 0; i < n; ++i)

        cout << arr[i] << " ";

  

    return 0;

}

Выход :

Array after sorting using default sort is : 
0 1 2 3 4 5 6 7 8 9 

Поэтому по умолчанию sort () сортирует массив в порядке возрастания.

Как отсортировать в порядке убывания?
sort () принимает третий параметр, который используется для указания порядка сортировки элементов. Мы можем передать функцию «great ()» для сортировки в порядке убывания. Эта функция выполняет сравнение таким образом, что раньше помещается больший элемент.

// C ++ программа для демонстрации сортировки по убыванию с использованием
// больше <> ().
#include <bits/stdc++.h>

using namespace std;

  

int main()

{

    int arr[] = {1, 5, 8, 9, 6, 7, 3, 4, 2, 0};

    int n = sizeof(arr)/sizeof(arr[0]);

  

    sort(arr, arr+n, greater<int>());

  

    cout << "Array after sorting : \n";

    for (int i = 0; i < n; ++i)

        cout << arr[i] << " ";

  

    return 0;

}

Выход:

Array after sorting : 
9 8 7 6 5 4 3 2 1 0 

Как отсортировать в определенном порядке?
Мы также можем написать нашу собственную функцию компаратора и передать ее в качестве третьего параметра. Эта функция «компаратора» возвращает значение; обратимый в bool, который в основном говорит нам, должен ли переданный «первый» аргумент быть помещен перед переданным «вторым» аргументом или нет.
Например: в приведенном ниже коде предположим, что интервалы {6,8} и {1,9} передаются в качестве аргументов в функции «CompareInterval» (функция компаратора). Теперь, когда i1.first (= 6)> i2.first (= 1), наша функция возвращает «false», что говорит нам о том, что «первый» аргумент не должен быть помещен перед «вторым», и поэтому сортировка будет выполняться в сначала упорядочите, как {1,9}, а затем {6,8}.

// Программа на C ++ для демонстрации STL sort () с использованием
// наш собственный компаратор
#include<bits/stdc++.h>

using namespace std;

  
// Интервал имеет время начала и время окончания

struct Interval

{

    int start, end;

};

  
// Сравнивает два интервала по времени начала.

bool compareInterval(Interval i1, Interval i2)

{

    return (i1.start < i2.start);

}

  

int main()

{

    Interval arr[] =  { {6,8}, {1,9}, {2,4}, {4,7} };

    int n = sizeof(arr)/sizeof(arr[0]);

  

    // сортируем интервалы в порядке возрастания

    // начальное время

    sort(arr, arr+n, compareInterval);

  

    cout << "Intervals sorted by start time : \n";

    for (int i=0; i<n; i++)

       cout << "[" << arr[i].start << "," << arr[i].end

            << "] ";

  

    return 0;

}

Выход:

Intervals sorted by start time : 
[1,9] [2,4] [4,7] [6,8] 

Эта статья предоставлена Shubham Agrawal . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

std :: sort () в C ++ STL

0.00 (0%) 0 votes