Algoritma dan Struktur Data - pengurutan insertion

10

Click here to load reader

description

Pengenalan algoritma dari metode pengurutan insertion atau insertion sort

Transcript of Algoritma dan Struktur Data - pengurutan insertion

Page 1: Algoritma dan Struktur Data - pengurutan insertion

Pengurutan Insertion

Algoritma danStruktur Data

Kuliahkita - Edwin Lunando

Page 2: Algoritma dan Struktur Data - pengurutan insertion

Pendahuluan

Pengurutan Insertion adalah metode pengurutan elemen pada penampung dengan cara menyisipkan elemen ke posisi yang memenuhi syaratnya (kurang dari atau lebih dari suatu elemen pada indeks tertentu).

Pemeriksaan dilakukan dari indeks ke-2 ke depan (posisi indeks dirinya - 1) sampai indeks pertama.

Page 3: Algoritma dan Struktur Data - pengurutan insertion

Proses: Pengurutan Membesar

● Mulai dengan indeks ke-2: 5● Perbandingan ke depan (dengan indeks dirinya-1): 6

5

3 1 8 7 2 46

Page 4: Algoritma dan Struktur Data - pengurutan insertion

Proses: Pengurutan Membesar

● Karena 5 < 6, sisipkan di 5 di depan 6 dan rapatkan kembali.

● Indeks pertama dan kedua telah teratur, mulai kembali dari indeks elemen yang dibandingkan +1 (2+1, berarti indeks ke-3)

5 3 1 8 7 2 46

5 3 1 8 7 2 46

5

Page 5: Algoritma dan Struktur Data - pengurutan insertion

Proses: Pengurutan Membesar

● Indeks ke-3: 3 sebagai pembanding● Perbandingan ke depan (dengan indeks dirinya-1): 6

5

3

1 8 7 2 46

Page 6: Algoritma dan Struktur Data - pengurutan insertion

Proses: Pengurutan Membesar

● 3 < 6, geser posisi 6● Bandingkan kembali ke depan (dengan indeks dirinya-

2): 5

5

3

1 8 7 2 46

Page 7: Algoritma dan Struktur Data - pengurutan insertion

Proses: Pengurutan Membesar

● geser posisi 5● Karena tidak ada yang dibandingkan kembali, sisipkan

3 di posisi terakhir perbandingan yang didapatkan● …● dst

5 4 8 7 2 163

5

3

4 8 7 2 163

Page 8: Algoritma dan Struktur Data - pengurutan insertion

procedure insertionSort( Output/Input A : list of sortable items ) for i = 1 to length[A]-1 do begin value = A[i]; j = i-1; done = false; repeat if A[j] > value A[j+1] = A[j]; j = j-1; if j < 0 done = true; else done = true; until done; A[j+1] = value; end

Pseudocode

Page 9: Algoritma dan Struktur Data - pengurutan insertion

#include <iostream>using namespace std;void insertionSort(int arr[], int length) { int i, j ,tmp; for (i = 1; i < length; i++) { j = i; while (j > 0 && arr[j - 1] > arr[j]) { tmp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = tmp; j--; } }}int main(){ int numbers[] = { 8, 40, 1, 5, 0, 9, 6, 4, 3, -1, 5 }; insertionSort(numbers, 10); for (int i = 0;i<10;i++) cout << numbers[i] << " | ";}

Kode C++

Page 10: Algoritma dan Struktur Data - pengurutan insertion

Kompleksitas

Worst Case O(n²)

Best Case O(n)

Average Case O(n²)