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

dokumen-dokumen yang mirip
SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

DATA SORTING. Altien Jonathan Rindengan, S.Si, M.Kom

Pengurutan (Sorting) Algoritma Pemrograman

Materi 4: SORTING (PENGURUTAN) Dosen:

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

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

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

Gambar 13.1 Ilustrasi proses algoritma sorting

PENGURUTAN (SORTING) 1. Introduction 2. Bubble Sort 3. Selection Sort 4. Insertion Sort

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

STRUKTUR DATA SORTING ARRAY

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

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

MODUL IV PENCARIAN DAN PENGURUTAN

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

BAB V SORTING (PENGURUTAN) INTERNAL

ALGORITMA PENGURUTAN & PENCARIAN

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

Pengurutan (Sorting)

PENGURUTAN DATA 2.1 Definisi Pengurutan 2.2 Metode-metode Pengurutan

STRUKTUR DATA (3) sorting array. M.Cs

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

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

Algoritma Bubble Sort dan Quick Sort

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

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

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

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

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

SORTING (PENGURUTAN DATA)

SORTING (Pengurutan)

Modul Praktikum Algoritma dan Struktur Data

Algoritma dan Pemrograman 2 PENGURUTAN

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

Sorting (Bubble Sort)

MODUL I ARRAY 1 DIMENSI

Modul 8 SORTING (PENGURUTAN)

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

BAB VI Pengurutan (Sorting)

BAB I PENDAHULUAN.

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

METODE DEVIDE AND CONQUER

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

Pernyataan FOR Pernyataan WHILE Pernyataan REPEAT. Dewi Sartika,M.Kom

Powered by icomit.wordpress.com

Teknik Pengurutan Kartu Remi

Algoritma dan Struktur Data

Algoritma dan Struktur Data. Searching dan Sorting

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

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

PENGURUTAN (SORTING) 1. Overview

Sorting Algorithms. Divide and Conquer

BAB 2 SORTING (PENGURUTAN)

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

PERTEMUAN 10 METODE DEVIDE AND CONQUER

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Bab Tujuan. 6.2 Insertion Sort

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-9 Pengurutan (Sorting) 2

TELAAH WAKTU EKSEKUSI PROGRAM TERHADAP KOMPLEKSITAS WAKTU ALGORITMA BRUTE FORCE DAN DIVIDE AND CONQUER DALAM PENYELESAIAN OPERASI LIST

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

BAB VI SORTIR ATAU PENGURUTAN

STRATEGI DIVIDE AND CONQUER

Prpsedur progaram selectioa sort (Dengan program C++)

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

BAB 8 SORTING DAN SEARCHING

# TEN Sorting PENDAHULUAN

PERTEMUAN 10 METODE DEVIDE AND CONQUER

7. SORTING DAN SEARCHING

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 12 & 13

Decrease and Conquer

1. Algoritma Searching

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK AMIKOM YOGYAKARTA

A. TUJUAN PEMBELAJARAN

Algoritma dan Pemrograman Array/Tabel[3] Oleh: Eddy Prasetyo N

Modul Praktikum 6 Pemograman Berorientasi Objek

Struktur Data Linier. Input. Program untuk menyelesaikan masalah. Algoritma Penyelesaian. Proses. Masalah. Struktur Data. Output

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

Kompleksitas Algoritma Sorting yang Populer Dipakai

Data Structure SORTING. Chapter 11. Dahlia Widhyaestoeti, S.Kom

SORTING ALGORITMA. Bubble Sort JANUARY 14, 2016

Pengenalan Array. Array Satu Dimensi

BAB VII ALGORITMA DIVIDE AND CONQUER

Bubble Sort (Pengurutan Gelembung / Pemberatan)

Sorting. Pertemuan ke 14.

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

A. TUJUAN PEMBELAJARAN

Nama : Suseno Rudiansyah NPM : Kelas : X2T Prodi : Teknik Informatika Tugas : Kuis Algoritma 2

ANALISIS ALGORITMA INSERTION SORT, MERGE SORT DAN IMPLEMENTASINYA DALAM BAHASA PEMROGRAMAN C++

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

RESUME ALGORITMA MERGE SORT DAN REKURENS

BAB 1 PENDAHULUAN 1-1

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

ALGORITMA DIVIDE AND CONQUER

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

BAB VI SEARCHING (PENCARIAN)

1. Mempelajari konsep dasar array, array ganda, pengiriman array ke fungsi dan string 2. Membuat program menggunakan array, array ganda

SORTING. Brigida Arie Minartiningtyas, M.Kom

Transkripsi:

Sorting adalah proses mengatur sekumpulan objek menurut aturan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending = dari data kecil ke data lebih besar) atau menurun (descending = dari data besar ke data lebih kecil).

Bubble sort (gelembung) Selection sort (maksimum/minimun) Insertion sort (sisip) Heap sort Shell sort Quick sort Merge sort Radix sort Tree sort

Metode pengurutan gelembung (bubble sort) diinspirasi oleh gelembung sabun yang ada di permukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air maka gelembung sabun akan selalu mengapung. Prinsip pengapungan ini juga dipakai pada pengurutan gelembung. Elemen yang berharga paling kecil diapungkan, artinya diangkat ke atas (atau ke ujung paling kiri) melalui pertukaran. Proses pengapungan ini dilakukan N kali langkah. Pada langkah ke-i, Larik[1..N] akan terdiri dari 2 bagian yaitu: Bagian yang sudah terurut yaitu L[1]..L[i]. Bagian yang belum terurut L[i+1]..L[n].

Langkah 1: Mulai dari elemen K=N,N-1,N-2,..2 bandingkan L[K] jika L[K] < L[K-1], pertukarkan L[K] dengan L[K-1]. minimum Pada akhir langkah 1, elemen L[1] berisi harga pertama. Langkah 2: Mulai dari elemen K=N,N-1,N-2,..3 bandingkan L[K] jika L[K] < L[K-1], pertukarkan L[K] dengan L[K-1]. minimum Pada akhir langkah 2, elemen L[2] berisi harga kedua dan L[1]..L[2] terurut.. Langkah 3: Mulai dari elemen K=N,N-1,N-2,..4 bandingkan L[K] jika L[K] < L[K-1], pertukarkan L[K] dengan L[K-1]. Pada akhir langkah 3, elemen L[3] berisi harga minimum ketiga dan L[1]..L[3] terurut... Langkah N-1: Mulai dari elemen K=N,N-1,N-2,..4 bandingkan L[K] jika L[K] < L[K-1], pertukarkan L[K] dengan L[K-1].

25 27 10 8 76 21 Langkah 1: K=N=6 21 76 K=5 8 21 76 K=4 8 10 21 76 K=3 8 27 10 21 76 K=2 8 25 27 10 21 76 Hasil akhir langkah 1 : 8 25 27 10 21 76

Langkah 2: K=N=6 21 76 K=5 10 21 76 K=4 10 27 21 76 K=3 10 25 27 21 76 Hasil Akhir dari langkah 2: 8 10 25 27 21 76 Langkah 3: K=N=6 21 76 K=5 21 27 76 K=4 21 25 27 76 Hasil Akhir dari langkah 3: 8 10 21 25 27 76

Langkah 4: K=N=6 27 76 K=5 25 27 76 Hasil Akhir dari langkah 4: 8 10 21 25 27 76 Langkah 5: K=N=6 27 76 Hasil Akhir dari langkah 5: 8 10 21 25 27 76 Selesai. Larik sudah terurutkan!

#include <stdio.h> #include <conio.h> #include <iostream.h> main(){ int i,k,temp; int L[5]; //Jumlah elemen dalam array ada 5 L[0]=1; L[1]=50; L[2]=10; L[3]=3; L[4]=2; //Proses secara Ascending(naik) for(i=0;i<=4;i++) for(k=0;k<=4;k++) if (L[k]>L[k+1]) {temp=l[k]; L[k]=L[k+1]; L[k+1]=temp; } for(i=0;i<=4;i++) cout<<l[i]<<endl; getch();}

#include <stdio.h> #include <conio.h> #include <iostream.h> main(){ int i,k,temp; int L[5]; //Jumlah elemen dalam array ada 5 L[0]=1; L[1]=50; L[2]=10; L[3]=3; L[4]=2; //Proses secara Descending(menurun) for(i=4;i>=0;i--) for(k=5;k>1;k--) if (L[k]>L[k--]) {temp=l[k]; L[k]=L[k--]; L[k--]=temp; } for(i=5;i>=1;i--) cout<<l[i]<<endl; getch();}

Pengurutan dengan metode bubble sort ini kurang efisien karena terlalu banyak penukaran yang dilakukan pada setiap langkah dan membutuhkan banyak waktu serta proses lebih lama, sehingga tidak direkomendasikan untuk dipakai. Namun metode ini mudah dipahami dan sederhana.

Urutkan larik berikut menggunakan metode bubble sort dengan ascending dan descending 5 2 10 50 70 6

Metode pengurutan ini disebut pengurutan maksimum / minimum karena didasarkan pada pemilihan elemen maksimum atau minimum kemudian mempertukarkan elemen maksimum/minimum tersebut dengan elemen terujung larik (elemen ujung kiri atau elemen ujung kanan). Selanjutnya elemen terujung itu kita isolasi dan tidak diikut sertakan pada proses selanjutnya. Karena proses utama dalam pengurutan adalah pemilihan elemen maksimum / minimum, maka metode ini disebut metode pemilihan (selection sort).

Langkah 1: Tentukan Harga Maksimum didalam L1[1..N] Pertukarkan harga maksimum dng L[N] Langkah 2: Tentukan Harga Maksimum didalam L1[1..N-1] Pertukarkan harga maksimum dng L[N-1] Langkah 3: Tentukan Harga Maksimum didalam L1[1..N-2] Pertukarkan harga maksimum dng L[N-2].. Langkah N-1: Tentukan Harga Maksimum didalam L1[1..2] Pertukarkan harga maksimum dng L[2].

29 27 10 8 76 21 Langkah 1: Cari elemen maksimum di dalam larik L[1..6] maks = L[5] = 76 Tukar maks dengan L[N],hasil akhir langkah 1: 29 27 10 8 21 76

Langkah 2: (berdasarkan susunan larik hasil langkah 1) Cari elemen maksimum di dalam larik L[1..5] maks = L[1] = 29 Tukar maks dengan L[5],hasil akhir langkah 2: 21 27 10 8 29 76 Langkah 3: (berdasarkan susunan larik hasil langkah 2) Cari elemen maksimum di dalam larik L[1..4] maks = L[2] = 27 Tukar maks dengan L[4],hasil akhir langkah 3: 21 8 10 27 29 76

Langkah 4: (berdasarkan susunan larik hasil langkah 3) Cari elemen maksimum di dalam larik L[1..3] maks = L[1] = 21 Tukar maks dengan L[3],hasil akhir langkah 4: 10 8 21 27 29 76 Langkah 5: (berdasarkan susunan larik hasil langkah 4) Cari elemen maksimum di dalam larik L[1..2] maks = L[1] = 10 Tukar maks dengan L[2],hasil akhir langkah 5: 8 10 21 27 29 76 Selesai. Larik sudah terurutkan!

#include <iostream.h> #include <conio.h> #include <iomanip.h> int main(){ //deklarasi array dengan 7 elemen int A[7]; int j,k,i,temp; int jmax,u=6; //memasukkan nilai sebelum diurutkan cout<<"masukkan nilai pada elemen array :"<<endl; for(i=0;i<7;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; }

//Proses pengurutan secara menaik (Ascending) for(j=0;j<7;j++) { jmax=0; for(k=1;k<=u;k++) if (A[k] > A[jmax]) jmax=k; temp=a[u]; A[u]=A[jmax]; A[jmax]=temp; u--; } //menampilkan nilai setelah diurutkan cout<<"\nnilai setelah diurutkan ="<<endl; for(i=0;i<7;i++) cout<<a[i]<<" "; getch();}

#include <iostream.h> #include <conio.h> #include <iomanip.h> int main(){ //deklarasi array dengan 7 elemen int A[7]; int j,k,i,temp; int jmax,u=6; //memasukkan nilai sebelum diurutkan cout<<"masukkan nilai pada elemen array :"<<endl; for(i=0;i<7;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; }

//Proses pengurutan secara turun (descending) for(j=0;j<7;j++) { jmax=0; for(k=u;k>=1;k--) if (A[k] < A[jmax]) jmax=k; temp=a[u]; A[u]=A[jmax]; A[jmax]=temp; u--; } //menampilkan nilai setelah diurutkan cout<<"\nnilai setelah diurutkan ="<<endl; for(i=0;i<7;i++) cout<<a[i]<<" "; getch();}

Untuk algoritma Pengurutan Minimum caranya sama persis dengan maksimum hanya saja yang ditukar adalah nilai yang minimum bukan maksimum.

dibandingkan dengan pengurutan gelembung (bubble sort) pengurutan dengan metode selection sort (maksimum/minimum) ini memiliki kinerja yang lebih baik. Operasinya pertukaran hanya sekali saja dilakukan pada setiap langkah sehingga waktu pengurutan dapat lebih ditekan. Metode ini direkomendasikan untuk dipakai.

Urutkan larik berikut menggunakan metode selection sort (maksimum/minimum) dengan ascending dan descending 2 0 10 5 70 16

Dari namanya, pengurutan sisip (insertion sort) adalah metode pengurutan dengan cara menyisipkan elemen larik pada posisi yang tepat. Pencarian posisi yang tepat dilakukan dengan pencarian beruntun. Selama pencarian posisi yang tepat dilakukan pergeseran elemen larik.

Andaikan: L[1] dianggap sudah tempatnya. Langkah 2: L[2] harus dicari tempatnya yang tepat pada L[1..2] dengan cara menggeser elemen L[1] ke kanan bila L[1] lebih besar dari L[2]. Misalkan posisi elemen yang tepat adalah K sisipkan L[2] pada K. Langkah 3: L[3] harus dicari tempatnya yang tepat pada L[1..3] dengan cara menggeser elemen L[1..2] ke kanan bila L[1..2 lebih besar dari L[3]. Misalkan posisi elemen yang tepat adalah K sisipkan L[3] pada K.

Langkah 4: L[4] harus dicari tempatnya yang tepat pada L[1..4] dengan cara menggeser elemen L[1..4] ke kanan bila L[1..4] lebih besar dari L[4]. Misalkan posisi elemen yang tepat adalah K sisipkan L[4] pada K. Langkah N: L[N] harus dicari tempatnya yang tepat pada L[1..N] dengan cara menggeser elemen L[1..N ke kanan bila L[1..N] lebih besar dari L[N]. Misalkan posisi elemen yang tepat adalah K sisipkan L[N] pada K.

Contoh : Tinjau larik dengan N=6 buah elemen dibawah ini yang belum terurut menjadi diurut naik. 29 27 10 8 76 21 Langkah 1: Elemen L[1] dianggap sudah terurut 29 27 10 8 76 21 Langkah 2: (berdasarkan susunan larik pada langkah 1) Cari posisi yang tepat untuk L[2] pada L[1..2],diperoleh : 29 27 10 8 76 21

Langkah 3: (berdasarkan susunan larik pada langkah 2) Cari posisi yang tepat untuk L[3] pada L[1..3],diperoleh : 10 27 29 8 76 21 Langkah 4: (berdasarkan susunan larik pada langkah 3) Cari posisi yang tepat untuk L[4] pada L[1..4],diperoleh : 8 10 27 29 76 21

Langkah 5: (berdasarkan susunan larik pada langkah 4) Cari posisi yang tepat untuk L[5] pada L[1..5],diperoleh : 8 10 27 29 76 21 Langkah 6: (berdasarkan susunan larik pada langkah 5) Cari posisi yang tepat untuk L[6] pad L[1..6],diperoleh : 8 10 21 27 29 76 Selesai. Larik sudah terurutkan!

#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();}

Kelemahan metode sisip 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.

Urutkan larik berikut menggunakan metode sisip dengan ascending dan descending 0 12 100 5 70 3

Menggunakan rekursi dalam penyelesaiannya : Permasalahan awal dipilah menjadi sub-masalah Solusi atas sub-masalah menuntun menuju permasalahan utama 3 Langkah: Divide Membagi permasalahan menjadi submasalah Conquer Menyelesaikan sub-masalah secara rekursif Jika sub-masalah cukup sederhana dan kecil, selesaikan secara langsung Combine Kombinasikan solusi dari sub-masalah yang ada, hingga mencapai permasalahan utama

Menggunakan pendekatan divide-and-conquer Divide Membagi elemen data menjadi dua bagian Conquer Selesaikan tiap bagian secara rekursif dengan memanggil method mergesort. Combine Kombinasikan dua bagian secara rekursif untuk mendapatkan urutan yang diharapkan Rekursi selesai pada saat sisa dari sebagian elemen yang akan diurutkan tepat tersisa satu