Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»


n болып келетін тізбек үшін мұндай қайта орналастыру- 393



Pdf көрінісі
бет367/466
Дата20.07.2022
өлшемі3,66 Mb.
#37798
түріПрограмма
1   ...   363   364   365   366   367   368   369   370   ...   466
n
болып келетін тізбек үшін мұндай қайта орналастыру-


393
лар саны 
n! (1*2*...*n) 
болады. 
next_permutation
алгоритмі кезекті 
қайта орналастыруды лексикографиялық тəртіппен, ал 
prev_permutation
алгоритмі бұрынғы орналастыруды жүзеге асырады. Егер келесі орналасты-
ру бар болатын болса, алгоритмдер 
true
бульдік мəнін, кері жағдайда 
false
мəнін қайтарады.
template
 
bool next_permutation(Bi fi rst, Bi last);
 
template
 
bool next_permutation(Bi fi rst, Bi last, Compare comp); 
template
 
bool prev_permutation(Bi fi rst, Bi last); 
template
 
bool prev_permutation(Bi fi rst, Bi last, Compare comp); 
Мысал:
#include  
#include  
using namespace std
int main(){
 
const int m = 3;
 
int a[m]={1, 4, 2}, b[m];
 int 
i;
 
copy(a, a + m, b);
 
cout << " next_permutation(a, a + m):" << endl;
 
while (next_permutation(a, a + m)){
 
for (i = 0; i < m; i++) cout << a[i] << " "; 
 
cout << endl;} 
 
cout << " prev_permutation(b, b + m):" << endl; 
while (prev_permutation(b, b + m)){
 
for (i = 0; i < m; i++) cout << b[i] << " "; 
 
cout << endl;} 
 return 
0;
}
Программа жұмысының нəтижесі:
next_permutation(a, a + m): 
2 1 4 
2 4 1 
4 1 2 
4 2 1
prev_permutation(b, b + m): 
1 2 4
26-1140


394
nth_element
Алгоритм жиымды ішінара сұрыптау əрекетін орындайды. Алгоритмнің 
орындалуынан кейін 
nth
итераторы арқылы берілген элементтің мəні толық 
сұрыптаудан кейінгімен бірдей болады, яғни осы позициядан солға қарай 
орналасқан элементтер одан кіші, оңға қарай орналасқандары одан үлкен 
болады.
template
 
void nth_element(Ran fi rst, Ran nth, Ran last);
template
 
void nth_element(Ran fi rst, Ran nth, Ran last, 
 
Compare comp);
partial_sort, partial_s ort_copy
partial_sort
алгоритмі де тізбекті ішінара сұрыптау əрекетін орындай-
ды. Алгоритм орындалған соң 
fi rst 
жəне 
middle
аралығындағы элементтер 
толық сұрыптаудан кейінгідей тəртіппен орналасады.
partial_sort_copy
алгоритмі тізбектің көшірмесімен дəл осындай 
əрекеттерді орындайды. 
template
 
void partial_sort(Ran fi rst, Ran middle, Ran last); 
template
 
void partial_sort(Ran fi rst, Ran middle, Ran last, 
 
Compare comp); 
template
 
Ran partial_sort_copy(In fi rst, In last, 
 
Ran result_fi rst, Ran result_last);
template 
 
Ran partial_sort_copy(In fi rst, In last,
 
Ran result_fi rst, Ran result_last, Compare comp);
Ішінара сұрыптау біз үшін бірнеше ең кіші немесе ең үлкен мəндер ғана 
маңызды болған жағдайларда, уақытты үнемдейді.


Достарыңызбен бөлісу:
1   ...   363   364   365   366   367   368   369   370   ...   466




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет