SORTING (Pengurutan)

dokumen-dokumen yang mirip
BAB 2 SORTING (PENGURUTAN)

# TEN Sorting PENDAHULUAN

Alpro & Strukdat 1 C++ (Sorting) Dwiny Meidelfi, M.Cs

Modul Praktikum Algoritma dan Struktur Data

Modul 8 SORTING (PENGURUTAN)

Gambar 13.1 Ilustrasi proses algoritma sorting

STRUKTUR DATA SORTING ARRAY

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

Sorting. Pertemuan ke 14.

1. Algoritma Searching

STRUKTUR DATA (3) sorting array. M.Cs

BAB V SORT. Proses penukaran tidak dapat langsung dilakukan dengan cara : nilai[1] = nilai[2]; nilai[2] = nilai[1];

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

BAB VI Pengurutan (Sorting)

SORTING (BAGIAN II) Proses kelima

Pengertian Algoritma Pengurutan

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Algoritma Sorting. Ahmad Kamsyakawuni, S.Si, M.Kom. Jurusan Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Jember

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

Algoritma dan Struktur Data. Searching dan Sorting

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

HEAP. Heap dan Operasinya. Oleh Andri Heryandi

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

Sorting adalah proses mengatur sekumpulan objek menurut aturan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending = dari data kecil

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

BAB 8 SORTIR. Pengurutan data (sorting) adalah suatu proses untuk menyusun kembali himpunan obyek menggunakan aturan tertentu.

Algoritma Bubble Sort dan Quick Sort

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA BUBBLE SORT, SELECTION SORT, INSERTION SORT

Pengurutan (Sorting)

SORTING (PENGURUTAN DATA)

PENGURUTAN (SORTING) 1. Overview

Pencarian (Searching)

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

A. TUJUAN PEMBELAJARAN

Modul Praktikum 6 Pemograman Berorientasi Objek

Algoritma dan Struktur Data

SORTING ARRAY FAKULTAS TEKNOLOGI INFORMASI UNISBANK SEMARANG : ANDY KRISTIANTO : Disusun Oleh :

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Praktikum 9. Pengurutan (Sorting) Quick Sort, Merge Sort

Prpsedur progaram selectioa sort (Dengan program C++)

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-8 Pengurutan (Sorting) 1

ALGORITMA PENGURUTAN & PENCARIAN

Pengurutan (Sorting) Algoritma Pemrograman

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

Sorting Algorithms. Divide and Conquer

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Praktikum 8. Pengurutan (Sorting) Bubble Sort, Shell Sort

BAB I PENDAHULUAN.

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Algoritme dan Pemrograman

Politeknik Elektronika Negeri Surabaya

MAKALAH STRUKTUR DATA HEAP SORT. Disusun Oleh :

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Outline STRUKTUR DATA. VII. Sorting

Algoritme dan Pemrograman

SORTING. Hartanto Tantriawan, S.Kom., M.Kom

Analisis Kecepatan Sorting Dengan Notasi Big O

Kompleksitas Algoritma Sorting yang Populer Dipakai

Sorting (Bubble Sort)

Powered by icomit.wordpress.com

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

12/26/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Sorting. Data untuk sorting. Contoh. Algoritme #1: BUBBLE SORT.

LAPORAN PRAKTIKUM SEMENTARA ALGORITMA & STRUKTUR DATA 1

Materi 4: SORTING (PENGURUTAN) Dosen:

A. TUJUAN PEMBELAJARAN

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Sorting. Quick Sort

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

A. TUJUAN PEMBELAJARAN

Pengurutan (Sorting) Keuntungan Data Terurut. Pengurutan Terbagi Dua Kelompok:

JURNAL TEKNOLOGI INFORMASI & PENDIDIKAN ISSN : VOL. 6 NO. 1 Maret 2013

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

MODUL PEMROGRAMAN 2. Queue (Antrian)

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

Sorting. Selection Sort. Straight insertion Sort. Merge Sort Paradigma Divide-and-Conquer. Quicksort

Binary Tree. Binary Tree dapat digambarkan berdasarkan kondisinya, sebagai berikut: Pointer ke akar (root) dari tree

STRATEGI DIVIDE AND CONQUER

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

PERTEMUAN 10 METODE DEVIDE AND CONQUER

Teknik Pengurutan Kartu Remi

BAB 8 SORTING DAN SEARCHING

Penerapan Struktur Data Pohon dalam Implementasi Algoritma Heapsort dan Tinjauan Kompleksitas Waktunya

Penerapan Pohon Dalam Heap Sort

7. SORTING DAN SEARCHING

Sorting. Struktur Data dan Algoritma. Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) Fasilkom UI

Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting)

BAB VI SORTIR ATAU PENGURUTAN

Operasi File. Chapter 13

Algoritma dan Pemrograman Sorting (Pengurutan) IS1313. Oleh: Eddy Prasetyo N

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

IT234 Algoritma dan Struktur Data. Tree

Politeknik Elektronika Negeri Surabaya

PERTEMUAN 10 METODE DEVIDE AND CONQUER

Bubble Sort dan Selection Sort di Java Console

Heap Tree dan Kegunaannya dalam Heap Sort

Transkripsi:

SORTING (Pengurutan) Proses pengurutan banyak ditemukan dalam komputer, karena bertujuan untuk memudahkan dan mempercepat pencarian data.merupakan proses penyusunan kembali sekumpulan objek ke dalam suatu urutan. Dengan tujuan untuk mempermudah pencarian, mempercepat keberadaan data terkecil atau terbesar.proses dalam pengurutan adalah dengan perbandingan dan pertukaran data. Didalam pengurutan ada istilah ascending(pengurutan data dari yang terkecil ke terbesar) dan descending(pengurutan dari data terbesar ke terkecil). Data tidakterurut Terurut ascending Terurut ascending 17 7 12 1 8 1 7 8 12 17 17 12 8 7 1 Berikut metode pengurutan, diantaranya : 1. Bubble Sort 2. Selection Sort 3. Insertion Sort 4. Quick Sort 5. Heap Sort Siti yuliyanti Page 1

a. Sorting dengan bubble sort Metode bubble sort, merupakan metode tersederhana untuk melakukan pengurutan data, tetapi memiliki kinerja yang terburuk untuk data yang besar. Pengurutan dilakukan dengan membandingkan sebuah bilangan dengan seluruh bilangan yang terletak sesudah bilangan tersebut.penukaran dilakukan kalau suatu criteria dipenuhi. Sebagai contoh, terdapat kumpulan seperti berikut. 25 57 48 37 12 92 80 33 Contoh proses pengurutan dengan urut naik ditunjukkan pada gambar : Tahap1Tahap 2 Jikajumlah data adalah n, makaterjadi n-1 tahappengurutan.berartipadacontoh di diatasdiperlukan 7 tahappengurutan.gambar 11.4 memperlihatkansetelah 7 tahappengurutandilakukan. Algoritma : SUBRUTIN bubble_sort(l,n) Untuktahap = 1 s/d n-1 Untuk j 0 s/d n-tahap-1 Jika L[j] > L[j+1] MAKA // Lakukanpenukaran tmp L[j] L[j] L[j+1] L[j+1] tmp AKHIR JIKA AKHIR UNTUK AKHIR UNTUK AKHIR SUBRUTIN Keadaan di setiaptahappengurutanimplementasi dalam Algoritma Siti yuliyanti Page 2

Contoh sederhana : Data awal 7 2 4 30 Tahap 1 : 7 2 4 30 tidak terjadi pertukaran 7 2 4 terjadi pertukaran 2 dan 4 4 2 30 terjadi pertukaran 2 dan 30 30 2 Maka hasil tahapan 1 : 7 4 30 2 Tahap 2 : 7 4 30 2 tidak terjadi pertukaran 7 4 30 terjadi pertukaran 30 dan 2 30 4 2 tidak terjadi pertukaran 4 2 Maka hasil tahapan 1 : 7 30 4 2 Tahap 3 : 7 30 4 2 terjadi pertukaran 30 7 4 terjadi pertukaran 2 dan 4 7 4 2 Maka hasil tahapan 1 : 30 7 4 2 Jika Data awal 7 2 4 30 Maka tahapan yg dilalui adalah tahapan 1 : 7 4 30 2 tahapan 1 : 7 30 4 2 tahapan 1 : 30 7 4 2 Siti yuliyanti Page 3

Implementasi dalam coding /* sorting dengan metode bubble sort secara ascending*/ #include <stdio.h> #include <conio.h> voidtampilkan_larik(int data[], int n) int i; for(i=0;i<n;i++) printf("%d ", data[i]); printf("\n"); voidbuble_sort(int data[],int n) inttahap,j,tmp; for (tahap=1;tahap<n;tahap++) for (j=0;j<n-tahap;j++) if (data[j]>data[j+1])// jika descending diganti tanda dengan < //tukarkan tmp=data[j]; data[j]=data[j+1]; data[j+1]=tmp; printf("hasiltahap %d : ", tahap); tampilkan_larik (data,n); int main() intjum_data=4; int i; int data[]=7,2,4,30; buble_sort(data, jum_data); //hasilpengurutan printf("\nhasilpengurutan: \n"); tampilkan_larik(data,jum_data); getche(); Siti yuliyanti Page 4

b. Sorting dengan Selection Sort Pemgurutan seleksi (selection sort) mempunyai mekanisme Misalnya untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada putarankedua akan dicari data keduaterkecil, danakan ditempatkan di indeks kedua (data[1]). Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses. Tahap 1 Tahap2 67 posawal 25 35 35 25 posmin 67 27 27 26 26 posawal posmin Tahap3 Tahap4 25 25 26 26 67 posawal 27 27 posmin 67 35 35 posawal posmin Proses pengurutan menggunakan metode selection sort secara terurut naik : 1. Mencari data terkecil dari data pertama sampai dengan data yang terakhir. kemudian ditukar posisinya dengan data pertama. 2. Mencari data terkecil dari data kedua sampai dengan data terakhir, kemudian ditukar posisinya dengan data kedua. 3. Mencari data terkecil dari data ketiga sam[ai data terakhir, kemudian ditukar posisimya dengan data ketiga. 4. Begitu seterusnya sampai semua data terurut naik. Apabila terdapat n buah data yang akan diurutkan, maka membutuhkan (n-1) langkah pengurutan, dengan data terakhir, yaitu data ke n tidak perlu diurutkan karena hanya tinggal data satu-satunya. Siti yuliyanti Page 5

#include <stdio.h> #include <conio.h> int data[10],data2[10]; int n; void tukar(int a, int b) int t; t = data[b]; data[b] = data[a]; data[a] = t; void selection_sort() int pos,i,j; for(i=1;i<=n-1;i++) pos = i; for(j = i+1;j<=n;j++) if(data[j] < data[pos]) pos = j; if(pos!= i) tukar(pos,i); int main() printf("===program SELECTION SORT==="); //Input Data printf("masukkan Jumlah Data : "); scanf("%d", &n); for(int i=0;i<n;i++) printf("masukkan data ke %d ", i); scanf("%d", &data[i]); data2[i]=data[i]; selection_sort(); printf("\n\n"); //tampilkan data printf("data Setelah di Sort : "); for(int i=1; i<=n; i++) printf("%d ",data[i]); printf("\n\nsorting Selesai"); getche(); Siti yuliyanti Page 6

c. Sorting dengan Insertion Sort Metode Insertion Sort adalah dimulai dari data ke-2 kemudian disisipkan pada tempat yang sesuai. Data pada posisi pertama diandaikan memang sudah pada tempatnya. Ilustrasinya mirip seperti saat menyisipkan kartu di permainan kartu. Seperti ketika Anda mengambil setiap kartu, kemudian Anda masukkan kartu ke posisi yang benar di tangan anda hingga terorganisir urutannya dengan rapi. Insertion Sort membagi array menjadi dua sub-array. Array sub pertama(diibaratkan kartu yang ditangan anda) yang diurutkan dan peningkatan ukuran dan semacamnya. Sub array kedua(seperi kartu yang akan diambil) kartu yang belum terurutkan, mengandung semua elemen yang belum dimasukkan ke dalam array sub pertama dan berkurang sesuai ukuran. Agar lebih mudah dalam memahaminya silahkan perhatikan ilustrasi gambar berikut ini: Siti yuliyanti Page 7

Maka implementasi dalam program yaitu : #include <stdio.h> #include <conio.h> int data[10],data2[10]; int n; void tukar(int a, int b) int t; t = data[b]; data[b] = data[a]; data[a] = t; Siti yuliyanti Page 8

void insertion_sort() int temp,i,j; for(i=1;i<=n;i++) temp = data[i]; j = i -1; while(data[j]>temp && j>=0) data[j+1] = data[j]; j--; data[j+1] = temp; void main() printf("===program INSERTION SORT==="); //Input Data printf("masukkan Jumlah Data : "); scanf( %d,&n); for(int i=1;i<=n;i++) printf("masukkan data ke %d :",i); scanf("%d",&data[i]); data2[i]=data[i]; insertion_sort(); printf("\n\n"); //tampilkan data printf("data Setelah di Sort : "); for(int i=1; i<=n; i++) scanf("%d", data[i]); printf("\n\nsorting Selesai"); getche(); Siti yuliyanti Page 9

D. Sorting dengan Quick Sort Quick sort adalah salah satu metode pengurutan dalam bahasa pemrograman. Proses sorting atau pengurutan dilakukan berdasarkan metode divide and conqueror. Quick sort ini mengurutkan data dengan sangat cepat. Tetapi tentu saja quick sort ini memiliki kekurangan. Misalnya, proses sorting yang dilakukan secara rekursif. Walaupun prosesnya sangat cepat, tapi menghabiskan memori yang besar jika data yang diurut banyak. Selain itu, quick sort juga tidak cocok jika digunakan untuk mengurutkan data dalam tabel yang berukuran kecil. Quick Sort merupakan Algortima Pembagi. Pertama sekali quicksort membagi list yang besar menjadi dua buah sub list yang lebih kecil: element kecil dan element besar. Quicksort kemudian dapat menyortir sub list itu secara rekursif. Langkah-Langkah pengerjaannya ialah: 1. Ambil sebuah elemen, yang disebut dengan pivot, pada sebuah daftar. 2. Urutkan kembali sebuah list sehingga elemen dengan nilai yang kecil dari pivot berada sebelum pivot, sedangkan seluruh element yang memiliki nilai yang lebih besar dari pivot berada setelahnya (nilai yang sama dapat berada pada pivot setelahnya). Setelah pemisahan, pivot berada pada posisi akhirnya. Operasi ini disebut Partition. 3. Sub list kemudian disortir secara recursif dari elemen yang lebih kecil dan sub list dari elemen yang lebih besar. Cara pengambilan pivot didapat dari L = 1 (data 1) dijumlahkan dengan R = N(jumlah data), kemudian dibagi 2. Misal data : 1 2 3 4 5 6 7 16 12 23 50 19 49 31 x data*(l + R) div 2+ x data*(1 + 7) div 2] x data*8 div 2+ x data*4+ Jadi, pivot pada tahap pertama adalah data ke-4 yaitu 50. Siti yuliyanti Page 10

Bila terdapat data acak sebagai berikut : 16 12 23 50 19 49 31 Data tersebut akan diselesaikan dengan metode quicksort secara descending. Langkah 1 : Tentukan pivot pada array. Misalkan pivot adalah x. x data*(l+r) div 2+ x data*(1 + 7) div 2+ x data*8 div 2+ x data*4+ i L j R i j 1 2 3 4 5 6 7 16 12 23 (50) 19 49 31 i bergerak dari sudut kiri ke kanan sampai mendapatkan nilai yang <= pivot. j bergerak dari sudut kanan ke kiri sampai mendapatkan nilai yang >= pivot. i berhenti pada data ke-1 krn langsung menemukan nilai yang lebih kecil dari pivot. j berhenti pada data ke-4 krn tidak menemukan nilai yang lebih besar daripada pivot. Karena i < j maka data yang ditunjuk oleh i ditukar dengan data yang ditunjuk oleh j sehingga menjadi: 50 12 23 16 19 49 31 Langkah 2 : data 1 2 3 4 5 6 7 50 12 23 (16) 19 49 31 i j i berhenti pada data ke-2 karena menemukan nilai yang lebih kecil dari pivot. j berhenti pada data ke-7 karena langsung menemukan nilai yang lebih besar dari pivot. Karena i < j maka data yang ditunjuk oleh i ditukar dengan data yang ditunjuk oleh j sehingga menjadi: 50 31 23 16 19 49 12 Langkah 3 : Data 1 2 3 4 5 6 7 50 31 23 (16) 19 49 12 i j i berhenti pada data ke-4 karena tidak menemukan nilai yang lebih kecil dari pivot. Siti yuliyanti Page 11

j berhenti pada data ke-6 karena menemukan nilai yang lebih besar dari pivot. Karena i < j maka data yang ditunjuk oleh i ditukar dengan data yang ditunjuk oleh j sehingga menjadi: 50 31 23 49 19 16 12 Langkah 4 : Data 1 2 3 4 5 6 7 50 31 23 (49) 19 16 12 i j i berhenti pada data ke-2 karena menemukan nilai yang lebih kecil dari pivot. j berhenti pada data ke-4 karena tidak menemukan nilai yang lebih besar dari pivot. Karena i < j maka data yang ditunjuk oleh i ditukar dengan data yang ditunjuk oleh j sehingga menjadi: 50 49 23 (31) 19 16 12 Langkah 5 : Data 1 2 3 4 5 6 7 50 49 23 (31) 19 16 12 i j i berhenti pada data ke-3 karena menemukan nilai yang lebih kecil dari pivot. j berhenti pada data ke-4 karena tidak menemukan nilai yang lebih besar dari pivot. Karena i < j maka data yang ditunjuk oleh i ditukar dengan data yang ditunjuk oleh j sehingga menjadi: 50 49 31 23 19 16 12 Proses pengurutan berhenti karena i tidak menemukan data yang lebih kecil dari x dan j tidak menemukan data yang lebih besar dari x. Siti yuliyanti Page 12

Berikut algoritmannya : Siti yuliyanti Page 13

e. Sorting dengan Heap Sort Heap adalah sebuah Tree yang memenuhi syarat Binary Tree secara lengkap, terdiri atas internal node dan external node dan setiap internal node menyimpan sebuah nilai. Nilai-nilai pada setiap node-nya memenuhi syarat Heap Minimum atau Heap Maksimum. Heap Maksimum jika nilai root lebih besar dari nilai left child dan right child, sedangkan Heap Minimum jika nilai root lebih kecil dari nilai left child dan right child. Binary heap digunakan sebagai struktur data dalam algoritma Heap-Sort Sebagaimana diketahui, ketika suatu Heap dibangun maka kunci utamanya adalah: node atas selalu mengandung elemen lebih besar dari kedua node dibawahnya (MaxHeap) atau sebaliknya (MinHeap) Apabila elemen berikutnya ternyata lebih besar dari elemen root, maka harus di swap. (MaxHeap) Root dari suatu Heap sort mengandung elemen terbesar dari semua elemen dalam Heap (MaxHeap) atau sebaliknya (MinHeap) Ilustrasi Heap (Insert) Jika ingin memasukkan atau menyisipkan node baru, letakkan pada sebuah memori kosong bagian akhir. Setelah itu, bandingkan node baru dengan root (parent) nodenya. Siti yuliyanti Page 14

Jika node baru lebih kecil daripada root (parent) nodenya, maka tukar nilainya. Selanjutnya bandingankan dengan root (parent) nodenya lagi, jika node baru lebih besar daripada root (parent) node, maka nilainya tidak ditukar. Penghapusan node, dilakukan pada root (parent) node. Kosongkan root (parent) nodenya. Selanjutnya, isikan dengan isi dari node yang posisinya paling akhir. Bandingkan root (parent) nodenya dengan child node yang paling kiri terlebih dahulu, jika ada diantara child node nilainya lebih kecil dari root node, maka tukar nilainya. Lakukanlah perbandingan dengan semua node sehingga datanya terurut dengan baik sesuai dengan syarat minimum head atau maksimum head. Siti yuliyanti Page 15