algoritma dan struktur data - pengurutan insertion

Post on 06-Jul-2015

98 Views

Category:

Engineering

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Pengenalan algoritma dari metode pengurutan insertion atau insertion sort

TRANSCRIPT

Pengurutan Insertion

Algoritma danStruktur Data

Kuliahkita - Edwin Lunando

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.

Proses: Pengurutan Membesar

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

5

3 1 8 7 2 46

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

Proses: Pengurutan Membesar

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

5

3

1 8 7 2 46

Proses: Pengurutan Membesar

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

2): 5

5

3

1 8 7 2 46

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

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

#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++

Kompleksitas

Worst Case O(n²)

Best Case O(n)

Average Case O(n²)

top related