Page 36 - Demo
P. 36
TEMATIKA 2 ALGORITMIKA DHE PROGRAMIMINë shembullin e mësimit të kaluar mbi renditjen në rend rritës të një tabele me n numra, dalluam rastin më të mirë dhe rastin më të keq. Shpjegimi teorik, për sjelljen e ndryshme të kompleksitetit në kohë të algoritmit të renditjes “Insertion Sort” për secilin rast, mund të analizohet nga pseudokodi i tij (fig.3). Cikli i jashtëm for përshkon të gjithë elementet e tabelës, ndërsa cikli i brendshëm while ekzekuton udhëzimet në trupin e tij vetëm nëse vlera paraardhëse ruajtur në indeksin i është më e madhe se vlera aktuale mbajtur nga ndryshorja k. Ky rast do të kërkonte zhvendosjen e elementeve dhe futjen e vlerës k në vendin e duhur. Vëmë re se sa më e renditur të jetë tabela në hyrje, aq më pak herë ekzekutohet cikli while, ndaj kompleksiteti në kohë afron më shumë me linearin. Ndërkohë, hyrja e renditur në rend zbritës do të bënte që cikli while të ekzekutohej për çdo vlerë të tabelës, që e çon kompleksitetin në nivel kuadratik.Tabela e mëposhtme shfaq disa shembuj të mirënjohur të kohës së ekzekutimit (kompleksitetit në kohë) të disa algoritmeve. Kolona e parë paraqet kompleksitetin, kolona e dytë emrin jo formal se si përshkruhet ai kompleksitet, kolona e tretë jep një shembull algoritmi zbatuar në gjuhën C dhe kolona e katërt jep një përshkrim mbi llojin e algoritmit. A mund të përmendni raste të tjera përveç atyre të paraqitura në tabelë?Norma e rritjes Emri Shembull kodi Përshkrimi1 Konstant a= b + 1; vlerëdhënie (një rresht i vetëm kodi)log(n) Logaritmikwhile(n>1){n=n/2;}Ndarje në gjysëm (kërkimi binar)n Linearfor(c=0; c max)5. max = A[i]6. rrit i me 1 derisa të arrijë vlerën n7. Fundi i ciklit for8. return max(1) for ( i = 0; i < n-1; i++) {(2) small = i ;(3) for ( j = i+1; j < n; j++)(4) if (A[j] < A[small] )(5) small = j(6) temp = A[small];(7) A[small] = A[i];(8) A[i] = temp; }34

