Mësimi 1 – Shkenca Kompjuterike
Mësimi 2 – Algoritmet
Mësimi 3 – Histori e shkurtër e kompjuterëve
Mësimi 4 – Disa Kuriozitete
Mësimi 5 – Zbulimi dhe dizajnimi i algoritmeve
Mësimi 6 – Shembuj për algoritme
Mësimi 7 – Sistemi binarë
Mësimi 8 – Deponimi i vlerave binare
Mësimi 9 – Logjika Boolean dhe Portat
Mësimi 10 – Ndërtimi i qarqeve kompjuterike
Mësimi 11 – Rëndësia e niveleve abstrakte
Mësimi 12 – Memorja dhe CACHE
Mësimi 13 – Përdorimi i Cache
Mësimi 14 – Input-Output dhe ruajtja masive
Mësimi 15 – Pajisja Aritmetike/Logjike
Mësimi 16 – Pajisja kontrolluese
Mësimi 17 – Si matet shpejtësia e kompjuterit
Mësimi 18 – Makinat virtuale dhe softueri i sistemit
Mësimi 19 – Sistemi Operativ
Mësimi 20 – Asemblerët dhe gjuha e asemblit
Mësimi 1 – Shkenca Kompjuterike
Mësimi 2 – Algoritmet
Mësimi 3 – Histori e shkurtër e kompjuterëve
Mësimi 4 – Disa Kuriozitete
Mësimi 5 – Zbulimi dhe dizajnimi i algoritmeve
Mësimi 6 – Shembuj për algoritme
Mësimi 7 – Sistemi binarë
Mësimi 8 – Deponimi i vlerave binare
Mësimi 9 – Logjika Boolean dhe Portat
Mësimi 10 – Ndërtimi i qarqeve kompjuterike
Mësimi 11 – Rëndësia e niveleve abstrakte
Mësimi 12 – Memorja dhe CACHE
Mësimi 13 – Përdorimi i Cache
Mësimi 14 – Input-Output dhe ruajtja masive
Mësimi 15 – Pajisja Aritmetike/Logjike
Mësimi 16 – Pajisja kontrolluese
Mësimi 17 – Si matet shpejtësia e kompjuterit
Mësimi 18 – Makinat virtuale dhe softueri i sistemit
Mësimi 19 – Sistemi Operativ
Mësimi 20 – Asemblerët dhe gjuha e asemblit
Mësimi 6 – Shembuj për algoritme
4 min
Rradhitja e Përzgjedhjes (Selection Sort) është një algoritëm që rendit një varg numrash të përzgjedhur. Ky algoritëm mund të bën rradhitjen e numrave të vargut nga më i vogli tek më i madhi, ose e kundërta. Mënyra se si e bën është duke e kontrolluar çdo numër se a është më i madhi në krahasim me të tjerët. Numrin më të madh e vendos në një varg tjetër, dhe kështu me rradhë deri sa të mbarojnë të gjithë numrat e përzgjedhur. Nëse e analizojmë mënyrën e veprimit të këtij algoritmi do e shohim se ka një rradhitje magnitude Θ (order of magnitude) prej n², që dmth se është Θ(n²). Shembull i këtij algoritmi është rradhitja e vargut:
Vargu është: 5,7,2,8,3
Kontrollojmë nëse ka numër më të madh se 5
E gjejmë se numri 7 është më i madh
Kontrollojmë nëse ka numër më të madh se 7
E gjejmë se numri 8 është më i madh, e vendosim të parin
Vargu është tani: 5,7,2,3 | 8
Vazhdojmë me rradhë dhe e kuptojmë se 7 është më i madh
Vargu është tani: 5,2,3 |7,8
Vazhdojmë me rradhë deri sa i rradhisim të gjithë numrat
Kështu në fund kemi vargun: 2,3,5,7,8
Pastaj kemi Kërkimin me rradhë (sequential search), ku algoritmi i kontrollon të gjithë numrat deri sa të gjejë atë që kërkon. Ky algoritëm ka një rradhitje magnitude Θ (order of magnitude) prej n, që dmth se është Θ(n). Një shembull mund të jetë kërkimi i numrit 7 në vargun:
Vargu është: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
Fillojmë me numrin e parë
Numri 1 nuk është numri i kërkuar, vazhdojmë me tjetrin
Numri 2 nuk është numri i kërkuar, vazhdojmë me tjetrin
Këtë e bëjmë deri sa të arrijmë te numri 7
Kështu e gjejmë numrin e kërkuar
Gjithashtu kemi algoritmin e kërkimit binarë (binary search), që kërkon një numër të caktuar në një varg duke filluar nga mesi. Kushti është që vargu të jetë i rradhitur, dhe pastaj algoritmi fillon të kërkojë nga mesi. Nëse numri është më i vogël, atëherë kërkon në gjysmën e parë, nëse është më i madh atëherë kërkon gjysmën e dytë të vargut. Ky algoritëm ka një rradhitje magnitude Θ (order of magnitude) prej lg n, që dmth se është Θ(lg n).Psh, nëse do kërkonim numrin 3 atëherë procedura e këtij algoritmi do ishte kështu:
Vargu është: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
Mesi i vargut është numri 8, ndërsa 3 është më i vogël se 8.
Tani kërkojmë mesin në pjesën majtas
Mesi i gjysmës majtas është 5, ndërsa 3 është më i vogël se 5.
Tani kërkojmë gjysmën e ngelur prej 1,2,3,4,5
Dmth, mesi është numri 3
Kështu e gjejmë numrin e kërkuar
Tani do të përmendim një shembull tjetër më të komplikuar për të treguar rëndësinë e hulumtimit të algoritmeve. Kjo mund të jetë për të zbuluar algoritme për një problem që nuk është i zgjidhur, apo për të ofruar algoritme të reja më efikase për ndonjë problem që tashmë ka një algoritëm të zbuluar më herët. Tepër e rëndësishme është që të gjenden algoritme që do jenë të thjeshtë, të shpejtë dhe mbi të gjitha të saktë.
Nëse do të kishim një varg të rradhitur me numrat 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, dhe do të duhej të gjenim numrin 3, atëherë do shohim se nëpërmjet të algorimit ku kërkojmë me rradhë do të gjenim më shpejtë numrin, në krahasim me algoritmin e kërkimit binarë.
Por, në qoftë se do të duhej të gjenim ndonjë numër më të madh, atëherë kërkimi binarë është shumë më i shpejtë
Tabela në vazhdim tregon se cili algoritëm është më i shpejtë në qoftë se ndryshon numri i madhësisë së vargut:
10 numra
Kërkimi binarë – 0.0003 sec
Kërkimi me rradhë – 0.001 sec
Rradhitja me përzgjedhje – 0.01 sec
50 numra
Kërkimi binarë – 0.0006 sec
Kërkimi me rradhë – 0.005 sec
Rradhitja me përzgjedhje – 0.25 sec
100 numra
Kërkimi binarë – 0.0007 sec
Kërkimi me rradhë – 0.01 sec
Rradhitja me përzgjedhje – 1 sec
1,000 numra
Kërkimi binarë – 0.001 sec
Kërkimi me rradhë – 0.1 sec
Rradhitja me përzgjedhje – 1.67 min
Diskutimet
#ReLOaD
Kjo platformë është zhvilluar si pjesë e projektit Robokid të organizatës YEP, i cili zbatohet në kuadër të "Programi rajonal për demokraci lokale në Ballkanin Perëndimor 2 - ReLOaD2 i cili është i financuar nga Bashkimi Evropian (BE), ndërsa e implementon Programi për Zhvillim i Kombeve të Bashkuara (UNDP). Për përmbajtjen e kësaj platforme, si dhe qëndrimet e paraqitura në të, janë përgjegjës vetëm organizata YEP dhe ato në asnjë mënyrë nuk pasqyrojnë pikëpamjet e Bashkimit Evropian (BE) ose të Programit për Zhvillim të Kombeve të Bashkuara (UNDP) .