В този подробен урок ще покажем работата на stable_sort() в C++.
Как да използвате функцията stable_sort() в C++
В C++, stable_sort() е стандартен библиотечен алгоритъм, който подрежда елементите във възходящ ред и запазва същия ред за еквивалентните елементи. Това означава, че ако два елемента са еднакви, елементът, който се появява първи в контейнера преди сортирането, пак ще се показва първи в сортирания списък. Тази функция работи, като многократно разделя контейнера (масиви, вектори, свързани списъци), сортира ги поотделно и след това ги обединява, за да получи сортирания контейнер. Той идва под <алгоритъм> заглавен файл.
Общият синтаксис за използване на stable_sort() в C++ е:
стабилно_сортиране ( Първо RandomAccessIterator , Последен RandomAccessIterator ) ;
Ето, първи е итераторът, сочещ към първия елемент в диапазона, който трябва да бъде сортиран, и последно е итераторът, сочещ към елемента след последния елемент в диапазона, който трябва да бъде сортиран.
The stable_sort() функцията използва ненамаляващ ред, за да сортира записите в диапазона [първи, последен], т.е. от най-малкия до най-големия елемент. Функцията по подразбиране сравнява елементите чрез оператор по-малко от (<).
Пример 1
Разгледайте примерния код по-долу, в този код създадохме векторен списък и го инициализира с някои стойности. След това използвахме stable_sort() за сортиране на стойностите на дадения вектор във възходящ ред. Несортираните и сортираните вектори се отпечатват на конзолата с помощта на цикъл, базиран на диапазон.
#include#include <вектор>
#include <алгоритъм>
използване на пространство от имена std ;
вътр основен ( )
{
вектор < вътр > списък = { 5 , 2 , 25 , 4 , 9 , 33 , 38 , 26 } ;
cout << 'Числа преди сортиране: ' ;
за всеки ( списък. започвам ( ) , списък. край ( ) , [ ] ( вътр х ) {
cout << х << ' ' ;
} ) ;
стабилно_сортиране ( списък. започвам ( ) , списък. край ( ) ) ;
cout << ' \н Числа след сортиране: ' ;
за всеки ( списък. започвам ( ) , списък. край ( ) , [ ] ( вътр х ) {
cout << х << ' ' ;
} ) ;
връщане 0 ;
}
Пример 2
В дадения по-долу пример създадохме масив с цели числа и го инициализирахме с някои стойности. След това по подразбиране, stable_sort() сортира елементите във възходящ ред:
#include#include <алгоритъм>
използване на пространство от имена std ;
вътр основен ( )
{
вътр масив [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;
вътр н = размер на ( масив ) / размер на ( масив [ 0 ] ) ;
cout << „Оригиналният масив е: \н ' ;
за ( вътр аз = 0 ; аз < н ; ++ аз ) {
cout << масив [ аз ] << ' ' ;
}
стабилно_сортиране ( масив , масив + н ) ;
cout << ' \н Масивът след сортиране е: \н ' ;
за ( вътр аз = 0 ; аз < н ; ++ аз ) {
cout << масив [ аз ] << ' ' ;
}
връщане 0 ;
}
Пример 3
The стабилно_сортиране взема третия параметър, за да посочи реда за сортиране на елемента. В примера по-долу сме използвали по-голяма() функция с stable_sort() за сортиране на елементите на масива в низходящ ред
#include#include <алгоритъм>
използване на пространство от имена std ;
вътр основен ( )
{
вътр масив [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;
вътр н = размер на ( масив ) / размер на ( масив [ 0 ] ) ;
cout << „Оригинален масив: \н ' ;
за ( вътр аз = 0 ; аз < н ; ++ аз ) {
cout << масив [ аз ] << ' ' ;
}
стабилно_сортиране ( масив , масив + н , по-голяма < вътр > ( ) ) ;
cout << ' \н Масив след сортиране: \н ' ;
за ( вътр аз = 0 ; аз < н ; ++ аз ) {
cout << масив [ аз ] << ' ' ;
}
връщане 0 ;
}
Долен ред
The stable_sort() функция в C++ е стандартен библиотечен алгоритъм, използван за сортиране на елементи в контейнер в ненамаляващ ред, като същевременно се поддържа относителният ред на елементите в контейнер с еднакви стойности. Може да се използва с различни контейнери като масиви, вектори и свързани списъци. Освен това е необходим трети параметър за указване на реда за сортиране на елементите.