Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 10

Insertion sort vs Selection

sort
By Dzaky Zakiyal Fawwaz (5114100067)

for j = 2 to n
key = A [j]
i=j 1
while i > 0 and A[i] > key
A[i+1]=A[i]
i=i 1
A[i+1]=key
for(j=1;j<n;j++){
key=A[j];
i=j-1;
while((A[i]>key)&&(i>0)){
A[i+1]=A[i];
i=i-1;}
A[i+1]=key;}

Loop invariant
Initialization

Sebelum iterasi atau pass pertama dilakukan, nilai j = 2, key


berisi indeks ke 2 dari array A
Maintenance
Didalam loop while jika ditemukan A dengan posisi i <= k. Akan
dilakukan shift A[j-1], A[j-2]..A[i+1] kekanan satu posisi,
kemudian key yaitu A[j] akan ditempatkan di i+1, maka A[i] <=
A[i+1] < A[i+2]. Dan seterusnya hingga A[1j-1] terurut.
Termination
Loop berhenti ketika j=n+1

Instruction

Cost

Times

for
for jj =
=2
2 to
to n
n
key = A [j]
key = A [j]
i=j 1
i=j
1i > 0 and
while
A[i]while
> keyi > 0 and

C1
C1
C2
C2
C3
C3
C4

N
N
N-1
N-1
N-1
N-1

C4

A[i] > key


A[i+1]=A[i]

C5

A[i+1]=A[i]
i=i 1
i=i 1

C5
C6
C6

A[i+1]=key
A[i+1]=key

C7
C7

N-1
N-1

T(n) = c1n + c2 (n 1) + c3 (n 1) + c42 j n ( tj )+


c5 2 j n (tj 1) + c6 2 j n (tj 1) + c7 (n 1)

Best case
T(n) = c1n + c2 (n 1) + c3 (n 1) + c42 j n (1) + c5 2 j n
(1 1) + c6 2 j n (1 1) + c7 (n 1)
T(n) = c1n + c2 (n 1) + c3 (n 1) + c4(n 1) + c7 (n 1)
T(n) = (c1 + c2 + c3 + c4 + c7 ) n + (c2 + c3 + c4 + c7)
T(n) = an + b = O(n)
Worst case
T(n) = c1n + c2 (n 1) + c3 (n 1) + c42 j n [n(n +1)/2 + 1]
+ c5 2 j n [n(n 1)/2] + c6 2 j n [n(n 1)/2] + c7 (n 1)
T(n) = (c4/2 + c5/2 + c6/2) n2 + (c1 + c2 + c3 + c4/2 c5/2 c6/2
+ c7) n (c2 + c3 + c4 + c7)
T(n) = an2 + bn + c = O(n2)

for i=1 to n-1


imin=i
for j=i+1 to n
if A[j] < A[imin]
imin =j
temp=A[i]
A[i]=A[imin]
A[imin]=temp
for(i=0;i<n;i++){
min=i;
for(j=i+1;j<5;j++){
if(arr[j]<arr[min])
min=j;}
temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;}

Loop invariant
Initialization
Sebelum iterasi pertama dilakukan, nilai j = i + 1, imin berisi
indeks elemen terkecil dari larik A[i...i].
Maintenance
Sebelum iterasi ke- j sekian, imin berisi indeks elemen terkecil
dari array A[i...j-1]. Kemudian setelah dijalankan, jika A[j] <
A[imin] maka imin=j dan disimpan di indeks terkecil A[i...j].
Termination
Berakhir jika j bernilai indeks n

Instruction

Cost

Times

for i=1 to n-1


for i=1 to n-1
imin=i
imin=i
for j=i+1 to n

C1
C1
C2
C2
C3

N
N
N-1
N-1

for j=i+1 to n

C3

if A[j] < A[imin] C4


if A[j] < A[imin] C4
imin =j
imin =j

C5
C5

temp=A[i]

C6

N-1

temp=A[i]
A[i]=A[imin]
A[i]=A[imin]
A[imin]=temp
A[imin]=temp

C6
C7
C7
c8
c8

N-1
N-1
N-1
N-1
N-1

You might also like