Insertion sort

41
Insertion Sort (Salah Satu Metode Pengurutan Data) Aku_dan_Hidupk

description

Salah satu metode pengurutan data. Oleh-oleh kuliah Perancangan dan Analisis Algoritma.

Transcript of Insertion sort

Page 1: Insertion sort

Insertion Sort(Salah Satu Metode Pengurutan

Data)

Aku_dan_Hidupku

Page 2: Insertion sort

Metode Insertion sort

• Metode penyisipan (Insertion sort) bertujuan untuk mengurutkan elemen-elemen dalam array.

• Metode ini mengurutkan bilangan-bilangan yang sedang dibaca dan membandingkannya secara berulang dengan bilangan di sisi kirinya yang belum terbaca hingga terurut.

Aku_dan_Hidupku

Page 3: Insertion sort

Contoh PenggunaanTerdapat setumpuk kartu bernomor 2 hingga 8

Kartu-kartu ini akan diacak, dan kemudian diurutkan kembali dengan metode “insertion sort”Berikut adalah penjelasan mengenai metode “insertion sort”

Aku_dan_Hidupku

Page 4: Insertion sort

Algoritma Insertion Sort

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] > key){

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

}A[i+1] = key

}}

Aku_dan_Hidupku

Pseudocode (inti kode)

Page 5: Insertion sort

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

Tempat menyimpan data = tiap kartu

Banyak data = banyak kartu

Page 6: Insertion sort

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

j adalah indeks array A

Kita akan mengurutkan kartu dari yang paling kiri

j = 1 sudah urut terhadap dirinya, jadi kita mulai dari j = 2

Page 7: Insertion sort

Key adalah variabel penyimpan sementara untuk kartu yang sedang akan diurutkan.

Key

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

Page 8: Insertion sort

Key

i adalah variabel penjelajah. i bermula dari nilai j-1.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

i

Page 9: Insertion sort

Key

i menjelajah mulai dari j-1 hingga sebelum indeks ke 0.i akan tetap menjelajah bila A[i] lebih besar dari nilai key.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1

while(i > 0) dan (A[i] > key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

i

Page 10: Insertion sort

Key

Nilai A[i+1] diganti dengan nilai A[i]

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

i

A[i+1]

Page 11: Insertion sort

Key

i bergerak ke indeks sebelumnya

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

i

Page 12: Insertion sort

Key

Kembali ke ‘while’. Karena i bernilai 0, maka perulangan berhenti.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1

while(i > 0) dan (A[i] > key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

i

Page 13: Insertion sort

Key

Nilai A[i+1] diisi dengan nilai pada key.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

i

Page 14: Insertion sort

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

A[1] dan A[2] sudah urut, kita lanjut ke j = 3

Page 15: Insertion sort

Key

Key adalah variabel penyimpan sementara untuk kartu yang sedang akan diurutkan.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

Page 16: Insertion sort

Key

nilai awal i adalah j-1.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

ij 1 2 3 4 5 6 7

Page 17: Insertion sort

Key

i menjelajah mulai dari j-1 hingga sebelum indeks ke 0.i akan tetap menjelajah bila A[i] lebih besar dari nilai key.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1

while(i > 0) dan (A[i] > key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

ij 1 2 3 4 5 6 7

Page 18: Insertion sort

Key

Nilai A[i+1] diganti dengan nilai A[i]

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

i

A[i+1]

j 1 2 3 4 5 6 7

Page 19: Insertion sort

i bergerak ke indeks sebelumnya

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

ij 1 2 3 4 5 6 7

Key

Page 20: Insertion sort

Kembali ke ‘while’. Nilai i sekarang adalah 1.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1

while(i > 0) dan (A[i] > key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

ij 1 2 3 4 5 6 7

Key

Ternyata A[i] < key. ‘while’ pun berhenti.

Page 21: Insertion sort

Nilai A[i+1] diisi dengan nilai pada key.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

ij 1 2 3 4 5 6 7

Key

Page 22: Insertion sort

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

A[1] hingga A[3] sudah urut, kita lanjut ke j = 4

Page 23: Insertion sort

j 1 2 3 4 5 6 7

Key

Key adalah variabel penyimpan sementara untuk kartu yang sedang akan diurutkan.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

Page 24: Insertion sort

j 1 2 3 4 5 6 7

Key

nilai awal i adalah j-1.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

i

Page 25: Insertion sort

j 1 2 3 4 5 6 7

Key

i

i menjelajah mulai dari j-1 hingga sebelum indeks ke 0.i akan tetap menjelajah bila A[i] lebih besar dari nilai key.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1

while(i > 0) dan (A[i] > key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

Page 26: Insertion sort

j 1 2 3 4 5 6 7

Key

i

Nilai A[i+1] diganti dengan nilai A[i]

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion SortA[i+1]

Page 27: Insertion sort

i bergerak ke indeks sebelumnya

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

Key

i

Page 28: Insertion sort

Kembali ke ‘while’. Nilai i sekarang adalah 2.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1

while(i > 0) dan (A[i] > key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

Ternyata A[i] < key. ‘while’ pun berhenti.

j 1 2 3 4 5 6 7

Key

i

Page 29: Insertion sort

Nilai A[i+1] diisi dengan nilai pada key.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1

while(i > 0) dan (A[i] > key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

Key

i

Page 30: Insertion sort

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

A[1] hingga A[4] sudah urut, kita lanjut ke j = 5

Page 31: Insertion sort

j 1 2 3 4 5 6 7

Key

Key adalah variabel penyimpan sementara untuk kartu yang sedang akan diurutkan.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

Page 32: Insertion sort

Key

nilai awal i adalah j-1.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

j 1 2 3 4 5 6 7

Algoritma Insertion Sort

i

Page 33: Insertion sort

Key

i menjelajah mulai dari j-1 hingga sebelum indeks ke 0.i akan tetap menjelajah bila A[i] lebih besar dari nilai key.

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1

while(i > 0) dan (A[i] > key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

i

Page 34: Insertion sort

Key

Nilai A[i+1] diganti dengan nilai A[i]

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

i

Page 35: Insertion sort

Key

Nilai A[i+1] diganti dengan nilai A[i]

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

j 1 2 3 4 5 6 7

i

Page 36: Insertion sort

i bergerak ke indeks sebelumnya

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

i

Key

j 1 2 3 4 5 6 7

Page 37: Insertion sort

i bergerak ke indeks sebelumnya

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

i

Key

j 1 2 3 4 5 6 7

Page 38: Insertion sort

i bergerak ke indeks sebelumnya

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1while(i > 0) dan (A[i] >

key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

i

Key

j 1 2 3 4 5 6 7

Page 39: Insertion sort

Lakukan hal yang sama untuk “7” dan “6”

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1

while(i > 0) dan (A[i] > key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

Page 40: Insertion sort

Lakukan hal yang sama untuk “7” dan “6”

InsertionSort (A, n) {

for j = 2 to n {

key = A[j]i = j-1

while(i > 0) dan (A[i] > key){A[i+1]= A[i]i = i -1

}A[i+1] = key

}}

Aku_dan_Hidupku

Algoritma Insertion Sort

Page 41: Insertion sort

Nah, sudah terurut kan

Aku_dan_Hidupku

Algoritma Insertion Sort

Terima kasih sudah menyimak.