C++'da stable_sort() İşlevi Nasıl Kullanılır

C Da Stable Sort Islevi Nasil Kullanilir



Dizinin öğelerini belirli bir düzende sıralamak için C++'da çeşitli işlevler vardır. Sıralama işlevine benzer şekilde, aralıktaki (ilk, son) öğeleri sıralamak için stable_sort kullanılır. Aralarındaki temel fark, kararlı_sort eşit değerlere sahip elemanların göreli sırasını korur.

Bu ayrıntılı öğreticide, makinenin çalışmasını göstereceğiz. stabil_sort() C++'da.

C++'da stable_sort() İşlevi Nasıl Kullanılır

C++'da, stabil_sort() elemanları artan sırada düzenleyen ve eşdeğer elemanlar için aynı sırayı koruyan standart bir kütüphane algoritmasıdır. Bu, iki öğe eşitse, sıralamadan önce kapta ilk görünen öğenin sıralanan listede yine ilk sırada görüneceği anlamına gelir. Bu işlev, kabı (diziler, vektörler, bağlantılı listeler) art arda bölerek, bunları ayrı ayrı sıralayarak ve ardından sıralanan kabı elde etmek için birleştirerek çalışır. altında gelir başlık dosyası.







Kullanmak için genel sözdizimi stabil_sort() C++'da:



kararlı_sort ( Önce RandomAccessIterator , RandomAccessIterator son ) ;

Burada, Birinci sıralanacak aralıktaki ilk öğeyi gösteren yineleyicidir ve son sıralanacak aralıktaki son öğeden sonraki öğeyi gösteren yineleyicidir.



bu stabil_sort() işlevi, [ilk, son] aralığındaki girdileri, yani en küçükten en büyüğe doğru sıralamak için azalmayan bir düzen kullanır. İşlev, varsayılan olarak öğeleri aşağıdakiler aracılığıyla karşılaştırır: küçüktür operatörü (<).





örnek 1

Aşağıdaki örnek kodu göz önünde bulundurun, bu kodda, oluşturduk vektör listesi ve onu bazı değerlerle başlattı. Sonra, kullandık stabil_sort() verilen vektörün değerlerini artan düzende sıralamak için. Sıralanmamış ve sıralanmış vektörler, aralık tabanlı döngü kullanılarak konsolda yazdırılır.

#include

#include

#include

ad alanı std'sini kullanma ;



int ana ( )

{

vektör < int > liste = { 5 , 2 , 25 , 4 , 9 , 33 , 38 , 26 } ;

cout << 'Sıralamadan önceki sayılar: ' ;

her biri için ( liste. başlamak ( ) , liste. son ( ) , [ ] ( int X ) {

cout << X << ' ' ;

} ) ;

kararlı_sort ( liste. başlamak ( ) , liste. son ( ) ) ;

cout << ' \N Sıralamadan sonraki sayılar: ' ;

her biri için ( liste. başlamak ( ) , liste. son ( ) , [ ] ( int X ) {

cout << X << ' ' ;

} ) ;



geri dönmek 0 ;

}




Örnek 2

Aşağıda verilen örnekte, bir tamsayı dizisi oluşturduk ve onu bazı değerlerle başlattık. Ardından, varsayılan olarak, stabil_sort() öğeleri artan düzende sıralar:

#include

#include

ad alanı std'sini kullanma ;

int ana ( )

{

int sıralamak [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;

int N = boyutu ( sıralamak ) / boyutu ( sıralamak [ 0 ] ) ;

cout << 'Orijinal dizi: \N ' ;

için ( int Ben = 0 ; Ben < N ; ++ Ben ) {

cout << sıralamak [ Ben ] << ' ' ;

}

kararlı_sort ( sıralamak , sıralamak + N ) ;

cout << ' \N Sıralamadan sonraki dizi: \N ' ;

için ( int Ben = 0 ; Ben < N ; ++ Ben ) {

cout << sıralamak [ Ben ] << ' ' ;

}

geri dönmek 0 ;

}

Örnek 3

bu kararlı_sort öğeyi sıralama sırasını belirtmek için üçüncü parametreyi alır. Aşağıdaki örnekte, biz kullandık daha büyük() ile işlev stabil_sort() dizinin öğelerini azalan düzende sıralamak için

#include

#include

ad alanı std'sini kullanma ;

int ana ( )

{

int sıralamak [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;

int N = boyutu ( sıralamak ) / boyutu ( sıralamak [ 0 ] ) ;

cout << 'Orijinal Dizi: \N ' ;

için ( int Ben = 0 ; Ben < N ; ++ Ben ) {

cout << sıralamak [ Ben ] << ' ' ;

}

kararlı_sort ( sıralamak , sıralamak + N , daha büyük < int > ( ) ) ;

cout << ' \N Sıralamadan sonraki dizi: \N ' ;

için ( int Ben = 0 ; Ben < N ; ++ Ben ) {

cout << sıralamak [ Ben ] << ' ' ;

}

geri dönmek 0 ;

}

Sonuç olarak

bu stabil_sort() C++'daki işlev, aynı değerlere sahip bir kaptaki öğelerin göreli sırasını korurken, bir kaptaki öğeleri azalan olmayan bir düzende sıralamak için kullanılan standart bir kitaplık algoritmasıdır. Diziler, vektörler ve bağlantılı listeler gibi farklı kapsayıcılarla kullanılabilir. Ek olarak, sıralama öğelerinin sırasını belirtmek için üçüncü bir parametre gerekir.