Académique Documents
Professionnel Documents
Culture Documents
Leksion 4
Renditja me Nderfutje
Renditja me nderfutje eshte nje algoritem efikas per te renditur nje
numer te vogel elementesh. Renditja me nderfutje vepron ne
menyre te ngjashme me menyren se si shume njerez zakonisht i
rendisin letrat:
– Fillojme me doren e majte boshe dhe letrat jane te
permbysura mbi tavoline.
– Me pas ne heqim nje leter nga tavolina dhe e vendosim ate
ne pozicionin e duhur ne doren e majte.
– Per te gjetur pozicionin e duhur per
nje leter, ne e krahasojme ate me
secilen prej letrave qe i kemi ne dore,
nga e djathta ne te majte.
– Ne çdo moment, letrat ne doren e
majte jane te renditura dhe keto letra
ishin fillimisht ne maje te stives se
letrave mbi tavoline.
Renditja me Nderfutje
INSERTION-SORT(A)
1 for j ← 2 to length[A] do
2 key ← A[j]
3 // Insert A[j] into the sorted sequence A[1.. j - 1].
4 i←j-1
5 while i > 0 and A[i] > key do
6 A[i + 1] ← A[i]
7 i←i-1
8 A[i + 1] ← key
Renditja me Nderfutje
Pseudokodi per renditjen me nderfutje paraqitet si nje
procedure e quajtur INSERTION-SORT, e cila merr si nje
parameter nje vektor A[1..n] qe permban nje sekuence me
gjatesi n qe duhet renditur. (Ne kod numri n i elementeve ne A
paraqitet nga length[A].)
Ne çdo hap numrat input jane te renditur ne vend: numrat
zhvendosen brenda vektorit A, me te shumten nje numer
konstant te tyre te ruajtur jashte vektorit. Vektori input A
permban sekuencen output te renditur kur perfundon
procedura INSERTION-SORT.
Shembull 1: Renditja me Nderfutje
Shembull 2: Renditja me Nderfutje
Shembull mbi renditjen me nderfutje
Bashkesia origjinale me 7 numra te
9 4 3 7 6 5 8
plote pozitive.
Pjesa e hijezuar e renditur dhe
4 9 3 7 6 5 8
perpiqemi te nderfusim vleren 3
Pjesa e hijezuar e renditur dhe
3 4 9 7 6 5 8
perpiqemi te nderfusim vleren 7
Pjesa e hijezuar e renditur dhe
3 4 7 9 6 5 8
perpiqemi te nderfusim vleren 6
Pjesa e hijezuar e renditur dhe
3 4 6 7 9 5 8
perpiqemi te nderfusim vleren 5
Pjesa e hijezuar e renditur dhe
3 4 5 6 7 9 8
perpiqemi te nderfusim vleren 8
Bashkesia e vlerave e renditur ne rendin
3 4 5 6 7 8 9
rrites
Saktesia e Algoritmit - Invarianti
• Zakonisht ne perdorim nje invariant te ciklit per te na
ndihmuar te kuptojme pse nje algoritem jep pergjigjen
e sakte.
• Te gjitha tj jane 1.
• Koha e ekzekutimit eshte:
BUBBLESORT(A)
1 for i ← 1 to length[A] do
2 for j ← 2 to length[A] – i+1 do
3 if A[j] < A[j - 1]
4 then exchange A[j] ↔ A[j - 1]
Shembull – Renditja me flluska