#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.



