Cara Menggunakan Fungsi stable_sort() dalam C++

Cara Menggunakan Fungsi Stable Sort Dalam C



Terdapat pelbagai fungsi dalam C++ untuk mengisih unsur-unsur urutan dalam susunan tertentu. Sama seperti fungsi isihan, stable_sort digunakan untuk mengisih elemen dalam julat (pertama, terakhir). Perbezaan utama antara mereka adalah bahawa stable_sort mengekalkan susunan relatif unsur-unsur dengan nilai yang sama.

Dalam tutorial butiran ini, kami akan menunjukkan cara kerja stable_sort() dalam C++.

Cara Menggunakan Fungsi stable_sort() dalam C++

Dalam C++, the stable_sort() ialah algoritma perpustakaan standard yang menyusun elemen dalam susunan yang semakin meningkat dan mengekalkan susunan yang sama untuk elemen yang setara. Ini bermakna jika dua elemen adalah sama, elemen yang muncul dahulu dalam bekas sebelum mengisih masih akan muncul dahulu dalam senarai diisih. Fungsi ini berfungsi dengan membahagikan bekas berulang kali (susunan, vektor, senarai terpaut), mengisihnya secara berasingan dan kemudian menggabungkannya untuk mendapatkan bekas yang diisih. Ia datang di bawah fail pengepala.







Sintaks umum untuk menggunakan stable_sort() dalam C++ ialah:



stable_sort ( RandomAccessIterator dahulu , RandomAccessIterator terakhir ) ;

Di sini, yang pertama ialah iterator yang menunjuk kepada elemen pertama dalam julat untuk diisih, dan terakhir ialah iterator yang menunjuk kepada elemen selepas elemen terakhir dalam julat untuk diisih.



The stable_sort() fungsi menggunakan tertib tidak menurun untuk mengisih masukan dalam julat [pertama, terakhir], iaitu, daripada elemen terkecil hingga terbesar. Fungsi secara lalai membandingkan item melalui operator kurang daripada (<).





Contoh 1

Pertimbangkan contoh kod di bawah, dalam kod ini, kami telah mencipta kod senarai vektor dan memulakannya dengan beberapa nilai. Seterusnya, kami menggunakan stable_sort() untuk mengisih nilai vektor yang diberikan dalam tertib menaik. Vektor yang tidak diisih dan diisih dicetak pada konsol menggunakan gelung berasaskan julat.

#include

#include

#include

menggunakan ruang nama std ;



int utama ( )

{

vektor < int > senarai = { 5 , 2 , 25 , 4 , 9 , 33 , 38 , 26 } ;

cout << 'Nombor sebelum mengisih:' ;

untuk setiap ( senarai. bermula ( ) , senarai. tamat ( ) , [ ] ( int x ) {

cout << x << ' ' ;

} ) ;

stable_sort ( senarai. bermula ( ) , senarai. tamat ( ) ) ;

cout << ' \n Nombor selepas mengisih: ' ;

untuk setiap ( senarai. bermula ( ) , senarai. tamat ( ) , [ ] ( int x ) {

cout << x << ' ' ;

} ) ;



kembali 0 ;

}




Contoh 2

Dalam contoh yang diberikan di bawah, kami telah mencipta tatasusunan integer dan memulakannya dengan beberapa nilai. Kemudian secara lalai, stable_sort() menyusun elemen dalam tertib menaik:

#include

#include

menggunakan ruang nama std ;

int utama ( )

{

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

int n = saiz ( tatasusunan ) / saiz ( tatasusunan [ 0 ] ) ;

cout << 'Susun atur asal ialah: \n ' ;

untuk ( int i = 0 ; i < n ; ++ i ) {

cout << tatasusunan [ i ] << ' ' ;

}

stable_sort ( tatasusunan , tatasusunan + n ) ;

cout << ' \n Tatasusunan selepas pengisihan ialah: \n ' ;

untuk ( int i = 0 ; i < n ; ++ i ) {

cout << tatasusunan [ i ] << ' ' ;

}

kembali 0 ;

}

Contoh 3

The stable_sort mengambil parameter ketiga untuk menentukan susunan untuk mengisih elemen. Dalam contoh di bawah, kami telah menggunakan lebih besar() berfungsi dengan stable_sort() untuk mengisih elemen tatasusunan dalam susunan menurun

#include

#include

menggunakan ruang nama std ;

int utama ( )

{

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

int n = saiz ( tatasusunan ) / saiz ( tatasusunan [ 0 ] ) ;

cout << 'Array Asal: \n ' ;

untuk ( int i = 0 ; i < n ; ++ i ) {

cout << tatasusunan [ i ] << ' ' ;

}

stable_sort ( tatasusunan , tatasusunan + n , lebih besar < int > ( ) ) ;

cout << ' \n Array selepas mengisih: \n ' ;

untuk ( int i = 0 ; i < n ; ++ i ) {

cout << tatasusunan [ i ] << ' ' ;

}

kembali 0 ;

}

Pokoknya

The stable_sort() fungsi dalam C++ ialah algoritma perpustakaan standard yang digunakan untuk mengisih elemen dalam bekas dalam susunan tidak menurun sambil mengekalkan susunan relatif elemen dalam bekas dengan nilai yang sama. Ia boleh digunakan dengan bekas yang berbeza seperti tatasusunan, vektor dan senarai terpaut. Selain itu, ia memerlukan parameter ketiga untuk menentukan susunan untuk menyusun elemen.