#include <iostream> #include <cstdlib> #include <time.h> using namespace std; //zbiór poleceń C# const int N = 5; // wprowadzamy ile liczb chcemy sortować int main() { srand( time( NULL ) ); // powoduje, że sortowane liczby się nie powtarzają int tablica[ N ]; // tworzymy tablicę int zmiana, kres_z_lewej, kres_z_prawej; kres_z_lewej = 0; // ustala że kres z lewej strony jest równy 0 kres_z_prawej = N; // ustala że kres z prawej strony jest równy liczbie tych sortowanych for( int i = 0; i < N; i++ ) tablica[ i ] = rand() % 100; // pętla powoduje, że wylosowane liczby są z przedziału <0;100> for( int i = 0; i < N; i++ ) cout << tablica [ i ] << ", "; // powoduje wyświetlenie licz wylosowanych cout << endl << endl; do { zmiana = -1; for( int i = kres_z_lewej; i < kres_z_prawej - 1; i++ ) { if( tablica[ i ] > tablica[ i + 1 ] ) { swap( tablica[ i ], tablica[ i + 1] ); //warunek powoduje zamianę miejscami zmiana = i; } cout << zmiana << endl; } if( zmiana == -1 ) break; kres_z_prawej = zmiana + 1; zmiana = 0; for( int i = kres_z_prawej; i >= kres_z_lewej; i-- ) if( tablica[ i ] > tablica[ i + 1] ) { swap( tablica[ i ], tablica[ i + 1] ); //warunek powoduje zamianę miejscami zmiana = i; } kres_z_lewej = zmiana + 1; }while( zmiana >= 0); cout << "Posortowana tablica: " << endl; // wyświetla posortowana tablice for( int i = 0; i < N; i++ ) cout << tablica[ i ] << ", "; return 0; }
Witam. Mam wytłumaczyć program z bąbelkowania dwukierunkowego. Mam taki programik i dobrze działa. Nie wszystko wiem jak działa dlatego proszę o pomoc. Napiszę w programie w komentarzach co wiem i byłbym wdzięczny jakby ktoś dopisał resztę jak działa. nie wiem głównie jak działają te pętle.