Anda di halaman 1dari 18

INSERTION SORT

QUICK SORT

KELOMPOK 5

Ade Aam Aminnudin


Faizal Ramdani
Yuda Adi Pratama
Adi Wijaya
Lovindo Antonius Situngkir

Insertion Sort
Insertion sort adalah sebuah metode pengurutan data
dengan menempatkan setiap elemen data pada posisinya
dengan cara melakukan perbandingan dengan data data
yang ada. Ide algoritma dari metode insertion sort ini
dapat dianalogikan sama seperti mengurutkan kartu,
dimana jika suatu kartu dipindah tempatkan menurut
posisinya, maka kartu yang lain akan bergeser mundur
atau maju sesuai kondisi pemindahanan kartu tersebut.
Dalam pengurutan data, metode ini dipakai bertujuan
untuk menjadikan bagian sisi kiri array terurutkan sampai
dengan seluruh array diurutkan.

Metode Insertion Sort


Metode penyisipan (Insertion sort)
bertujuan untuk mengurutkan
elemen-elemen dalam array.
Metode ini mengurutkan bilanganbilangan yang sedang dibaca dan
membandingkannya secara
berulang dengan bilangan di sisi
kirinya yang belum terbaca hingga
terurut.

Contoh Insertion Sort

Bagian biru/abu-abu (dua bilangan pertama)


sekarang dalam keadaan terurut secara relatif

Berikutnya, kita perlu menyisipkan bilangan ketiga


(4) ke dalam bagian biru/abu-abu sehingga
setelah penyisipan tersebut, bagian biru/abu-abu
tetap dalam keadaan terurut secara relatif.

Nah Terus caranya Gimana gan !!!

Caranya :
1. Ambil bilangan ketiga (4)

2. Geser bilangan kedua (10) sehingga ada ruang untuk disisipi

3. Sisipkan bilangan 4 ke posisi yang tepat

Sekarang, tiga bilangan pertama sudah terurut secara relatif dan kita
sisipkan bilangan keempat kepada tiga bilangan pertama tersebut.
Setelah penyisipan, empat bilangan pertama haruslah dalam
keadaan terurut secara relatif.

Ulangi proses tersebut sampai bilangan terakhir


disisipkan

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
main(){
int j,k, temp;
int L[5];
L[1]=1;
L[2]=25;
L[3]=10;
L[4]=30;
L[5]=2;
for(k=2;k<=5;k++){
temp=L[k];/* ambil elemen L[k] supaya tidak tertimpa penggeseran*/
/* Cari Posisi Yang tepat dalam L[1..k-1] sambil menggeser*/
j=k-1;
while(temp<=L[j])
{
L[j+1]=L[j];
j--;
}

if((temp >= L[j])|| ( j=1))


L[j+1]=temp; /*posisi yg tepat untuk L[k] ditemukan*/
else
{
L[j+1]=L[j];
L[j]=temp;
}
}
for(k=1;k<=5;k++)
cout<< L[k]<<" ";
getch();}

Kesimpulan
Kelemahan metode sisip(insert) terletak pada
banyaknya operasi yang diperlukan dalam
mencari posisi yang tepat untuk elemen larik.
Untuk larik yang jumlahnya besar ini tidak
praktis. Dari ketiga metode tersebut,
pengurutan maksimum/minimum memiliki
kinerja yang terbaik.

Quick Sort
Dinamakan quick sort karena dapat mengurutkan data dengan
sangat cepat. Dimana cara kerjanya adalah dengan
membandingkan suatu elemen(poros) dengan elemen yang lain
dan menyusun sedemikian rupa sehingga elemen-elemen lain
yang lebih kecil dari pada poros tersebut terletak disebelah
kirinya dan elemen-elemen lain yang lebih besar dari pada poros
tersebut terletak disebelah kanannya. Sehingga dengan demikian
telah terbentuk dua sublist, Lalu pada sublist kiri dan sublist
kanan kita anggap sebuah list baru dan kita kerjakan proses yang
sama seperti sebelumnya. Demikian seterusnya sampai tidak
terdapat sublist lagi.
Sehingga di dalamnya telah terjadi proses rekursif.

Quick Sort
Quick-sort adalah teknik pengurutan data yang
memiliki kerumitan rata-rata O(n log n) tetapi dalam
worst-case bisa mencapai O(n2)
Teknik Quick-sort berbasis teknik divide-andconquer, sbb:
Divide : array A[p..r] dibagi menjadi A[p..q] dan A[q+1 ..r]
sehingga setiap elemen A[p..q] lebih kecil dari atau sama
dengan setiap elemen A[q+1..r]
Conquer : subarray A[p..q] dan A[q+1..r] juga di-sort
menurut Quick-Sort
Combine : pada akhirnya A[p..r] akan ber-urutan

QuickSort(A,p,r)
if (p < r)
then q Partisi(A,p,r);
QuickSort(A,p,q);
QuickSort(A,q+1,r);
Partisi(A,p,r)
x A[p]; i (p-1); j (r+1);
while (true) {
repeat (j j -1) until (A[j] <=
x)
repeat (i i+1) until (A[i] >=
x)
if (i < j)
then Swap(A[i], A[j])
else Return (j)
}

Analisis :
Worst-case : terjadi apabila partisi memberikan
q=(n-1), atau subarray pertama = A[1..n-1] dan
subarray kedua hanya 1 elemen A[n]
T(n) = T(n-1) + (n), jadi T(1) = (1)
n
n
Solusinya =
2

(
k
)

(
k
)

(
n
)

k 1

k 1

Average-case : karena mengikuti divide-andconquer maka: T(n) = 2 T(n/2) + (n) sehingga


solusi-nya adalah O(n log n)

Kelebihan Quick Sort


Algoritmanya sederhana dan mudah diterapkan pada
berbagai bahasa pemrograman dan arsitektur mesin secara
efisien.
Dalam prakteknya adalah yang tercepat dari berbagai
algoritma pengurutan dengan perbandingan, seperti merge
sort dan heap sort.
Melakukan proses langsung pada input (in-place) dengan
sedikit tambahan memori.
Bekerja dengan baik pada berbagai jenis input data (seperti
angka dan karakter).

Keleman Quick Sort


Sedikit kesalahan dalam penulisan program membuatnya
bekerja tidak beraturan (hasilnya tidak benar atau tidak
pernah selesai).
Memiliki ketergantungan terhadap data yang dimasukkan,
yang dalam kasus terburuk memiliki kompleksitas O(n2).
Secara umum bersifat tidak stabil, yaitu mengubah urutan
input dalam hasil akhirnya (dalam hal inputnya bernilai sama).
Pada penerapan secara rekursif (memanggil dirinya sendiri)
bila terjadi kasus terburuk dapat menghabiskan stack dan
memacetkan program.

TERIMA KASIH

Anda mungkin juga menyukai