Programarea este ușoară - lecția 1

Esența acestui algoritm este că elementul listei sortate "apare" ca un balon (apropo, de aceea algoritmul și-a luat numele) și se mișcă până se găsește locul. În punerea în aplicare, acest algoritm este foarte simplu, vezi pentru tine:







Dacă analizați cu atenție programul, probabil că veți întreba imediat de ce primul ciclu începe cu al doilea element? Pentru a răspunde la aceasta, hai să ne uităm la bucla imbricată. Începe la sfârșitul listei sortate și se întoarce la elementul curent al bucla părinte. Acum, să acordăm atenție conținutului bucla imbricată:

După cum puteți vedea, efectuăm operații cu elementul sub numărul j-1. La prima trecere, acesta va fi elementul de la numărul 1 (deoarece 2-1 = 1).

Cum funcționează algoritmul de sortare a bulelor? Buclele superioare se mișcă în direcția înainte, după ce pointerul este sortat. Și ciclul imbricat este sortat direct. El apoi și "împinge" elementul la locul său, făcând acest lucru prin permutare.







x: = element [j-1];
element [j-1]: = element [j];
element [j]: = x;

Desigur, permutarea este necesară numai în cazul în care elementul anterior este mai mare decât cel actual - înseamnă că trebuie să fie "omis", iar cel actual este acela de a "ridica". Dacă ordonăm în ordine descrescătoare, atunci, firește, totul este opusul.

Și acum vom testa algoritmul. Vom plasa componentele pe formular conform screenshot *:

Programarea este ușoară - lecția 1

Listă câmp (TListBox). care afișează matrice pentru a sorta, apel lbin, care, după - lbOut, bifați pentru a afișa rezultatele (chbShowResults) este necesară pentru ca am putea opri afișarea listei atunci când geamandura pentru a testa liste mari, în scopul de a determina performanța algoritmului. Câmp pentru a introduce numărul de elemente de matrice (TSpinEdit) numite seCount. etichetă pentru a afișa începutul și sfârșitul sortarea și lbBegSort lbEndSort respectiv, butonul btnSort.

Acum, să începem programarea. Pastram textul procedurii Bubble in sectiunea de implementare. În secțiunea tipuri, adăugați noi tipuri:

DataItem = intreg;
DataArray = matrice [1..800000] de integer;

Declarați variabila globală Ar: DataArray *;

Pentru obiectul seCount, setați proprietatea la MinValue 1 și MaxValue la 800000.







Articole similare

Trimiteți-le prietenilor: