1 / 12

Datu kārtošanas metodes – datu kārtošana ar burbulīša metodi

Datu kārtošanas metodes – datu kārtošana ar burbulīša metodi. Daugavpils Valsts ģimnāzija Edgars Pudulis. Teorija. “Burbulīša metode” ir vienkāršākā no kārtošanas metodēm.

asta
Télécharger la présentation

Datu kārtošanas metodes – datu kārtošana ar burbulīša metodi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Datu kārtošanas metodes – datu kārtošana ar burbulīša metodi Daugavpils Valsts ģimnāzija Edgars Pudulis

  2. Teorija • “Burbulīša metode” ir vienkāršākā no kārtošanas metodēm. • Šo nosaukumu metode guvusi no algoritma izpildes īpatnībām, jo kārtojamie elementi masīvā pārvietojas vienā virzienā kā gaisa burbuļi ūdenī. “Vieglākie” (mazākie) skaitļi “uzpeld”, smagākie savukārt “nogrimst”. • Ja kārtojamo elementu ir daudz, burbulīša metode ir lēna, jo palielinoties kārtojamo elementu skaitam, pieaug kārtojamo darbību skaits. • Labās īpašības: • metodes ir vienkārša un viegli saprotama no programmēšanas viedokļa; • netiek veidots papildus masīvs.

  3. Teorija, algoritma būtība Izvēlamies attēlā norādīto skaitļu masīvu. Kā redzams masīvā ir 8 elementi, apzīmēsim elementu skaitu ar N = 8. Vienā sērijā algoritma darbības laikā tiek salīdzināti blakus stāvošie elementi atbilstoši mainot tos vietām. Ja ieskatās attēlā, secinām, ka salīdzinājumu skaits vienā sērijā ir 7, jeb N – 1, bet sēriju skaits ir jāpielieto tik ilgi, kamēr kādā no sērijām nenotiks neviena elementu maiņa. Atkarībā no tā, kāda zīme tiek lietota ( > vai <) attiecīgi pirmais elements ir vismazākais vai otrādi – vislielākais.

  4. Teorija, algoritma piemērs (izvēlamies kārtojumu uz kreiso pusi – mazākais elements būs pa kreisi) Piemērā var pamanīt, ka ar katru sēriju lielākie elementi jau nonāk pareizajā pozīcijā, līdz ar to katras nākamās sērijas salīdzinājumu skaitu var samazināt par vienu!

  5. Programma Pascal vidē, mainīgo definēšana Uses crt; var i,x,n:integer; kartot:boolean; a:array[1..20] of integer; begin clrscr; randomize; n:=19; (notīrām ekrānu, ieslēdzam gadījuma skaitļu operatoru, un nosakām salīdzinājumu skaitu n=19) readln; (redzēt programmas rezultātu, kamēr netiek nospiests ENTER) end. Ieviesīsim sekojošus mainīgos: i – cikla uzskaites operators. x – masīva elementu maiņas operators – “starpnieks”. n – sērijas salīdzinājumu skaits, kas šoreiz ir 19, jo elementu skaits ir 20. kartot – loģiskais operators, kas noteiks vai ir notikusi kāda elementu pārvietošana, var pieņemt divas vērtības patiess / nepatiess. a – 20 elementu masīvs.

  6. Programma Pascal vidē, datu ievads / izvads for i:=1 to 20 do begin a[i]:=random(15); write(' ',a[i]); end; writeln;writeln; for i:=1 to 20 do write(' ',a[i]); • Papildināsim programmu ar diviem cikliem. • Pirmajā ciklā ar gadījuma skaitļu interpretatoru piešķiram masīva a mainīgajiem vērtības robežās no 0 līdz 15 un izvadām tās uz ekrāna • Ar komandu writeln palīdzību novietojam kursoru vienu rindu zemāk un izdrukājam atkal šobrīd tās pašas masīva vērtības uz ekrāna. • Svarīgi! Pēc komandas DO otrajā ciklā nav lietots Begin un End, to var darīt, ja ciklā izpilda tikai vienu darbību. • Iegūtā programma izskatās šādi:

  7. Programma Pascal vidē, datu ievads / izvads Uses crt; var i,x,n:integer; kartot:boolean; a:array[1..20] of integer; begin clrscr; randomize; n:=19; for i:=1 to 20 do begin a[i]:=random(15); write(' ',a[i]); end; writeln;writeln; for i:=1 to 20 do write(' ',a[i]); readln; end. Lai atdalītu simbolu uz ekrāna vienu no otra, izvadām tukšumzīmes!

  8. Vienas sērijas kārtojums For i:=1 to n do if a[i]>a[i+1] then begin x:=a[i]; a[i]:=a[i+1]; a[i+1]:=x; kartot:=true; end; n:=n – 1; Pievienosim programmai vienu pārvietojuma sēriju. Šobrīd tiek apskatīti ik pa divi blakus stāvošie elementi a[ i ], a[ i +1 ] un, ja tie atbilst nosacījumam, tiek mainīti vietām. Papildus elementam KARTOT piešķirsim vērtību TRUE, kas nozīmē, ka ir noticis vismaz viens elementu maiņas gadījums. Un samazinām salīdzinājumu skaitu par vienu vērtību ar darbību n:=n – 1.

  9. Iegūtā programma Uses crt; var i,x,n:integer; kartot:boolean; a:array[1..20] of integer; begin clrscr; randomize; n:=19; for i:=1 to 20 do begin a[i]:=random(15); write(' ',a[i]); end; For i:=1 to n do if a[i]>a[i+1] then begin x:=a[i]; a[i]:=a[i+1]; a[i+1]:=x; kartot:=true; end; n:= n - 1; writeln;writeln; for i:=1 to 20 do write(' ',a[i]); readln; end.

  10. Masīva kārtošana REPEAT KARTOT:=FALSE; For i:=1 to n do if a[i] > a[i+1] then begin x:=a[i]; a[i]:=a[i+1]; a[i+1]:=x; kartot:=TRUE; end; n:=n – 1; UNTIL KARTOT = FALSE; Papildināsim kārtošanas daļu ar papildus ciklu, kas sevī ietver nepieciešamo sēriju atkārtošanas daudzumu. “Atkārtot tik ilgi, kamēr mainīgais KARTOT ir palicis ar nemainīgu vērtību FALSE, t.i. visi salīdzinājumi vienā sērijā (ciklā For) ir notikuši bez elementu novietojuma maiņas.

  11. Iegūtā programma Uses crt; var i,x,n:integer; kartot:boolean; a:array[1..20] of integer; begin clrscr; randomize; n:=19; for i:=1 to 20 do begin a[i]:=random(15); write(' ',a[i]); end; repeat kartot:=false; For i:=1 to n do if a[i]>a[i+1] then begin x:=a[i]; a[i]:=a[i+1]; a[i+1]:=x; kartot:=TRUE; end; n:=n -1; until kartot = FALSE; writeln;writeln; for i:=1 to 20 do write(' ',a[i]); readln; end.

  12. Paldies par uzmanību!

More Related