Sorting. Pertemuan ke 14.



dokumen-dokumen yang mirip
Alpro & Strukdat 1 C++ (Sorting) Dwiny Meidelfi, M.Cs

A. TUJUAN PEMBELAJARAN

Modul Praktikum Algoritma dan Struktur Data

SORTING (PENGURUTAN DATA)

PENGURUTAN (SORTING) 1. Overview

Modul 8 SORTING (PENGURUTAN)

BAB 2 SORTING (PENGURUTAN)

Politeknik Elektronika Negeri Surabaya

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

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

Politeknik Elektronika Negeri Surabaya

SORTING (Pengurutan)

Gambar 13.1 Ilustrasi proses algoritma sorting

# TEN Sorting PENDAHULUAN

STRUKTUR DATA SORTING ARRAY

Algoritma dan Struktur Data

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

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

A. TUJUAN PEMBELAJARAN

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

Politeknik Elektronika Negeri Surabaya

Algoritma Sorting (Selection Insertion)

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

STRUKTUR DATA (3) sorting array. M.Cs

Algoritma dan Struktur Data. Searching dan Sorting

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

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

A. TUJUAN PEMBELAJARAN

BAB VI Pengurutan (Sorting)

ALGORITMA PENGURUTAN & PENCARIAN

Politeknik Elektronika Negeri Surabaya

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

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

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

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

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

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

Powered by icomit.wordpress.com

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

Bubble Sort dan Shell-Sort. Yuliana Setiowati

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

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

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

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

Materi Praktikum Algoritma dan Pemrograman II Sorting Algorithm (Algoritma Pengurutan)

Algoritme dan Pemrograman

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

BAB 8 SORTING DAN SEARCHING

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

7. SORTING DAN SEARCHING

PERTEMUAN 10 METODE DEVIDE AND CONQUER

Algoritma dan Pemrograman 2 PENGURUTAN

BAB V SORTING (PENGURUTAN) INTERNAL

Prpsedur progaram selectioa sort (Dengan program C++)

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

Simple Sorting Techniques

Teknik Pengurutan Kartu Remi

Modul Praktikum 6 Pemograman Berorientasi Objek

PERTEMUAN 10 METODE DEVIDE AND CONQUER

Politeknik Elektronika Negeri Surabaya

Kisi-Kisi Ujian Akhir Semester Algoritma dan Pemrograman Lanjut

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Outline STRUKTUR DATA. VII. Sorting

Pengurutan (Sorting)

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

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

Materi 4: SORTING (PENGURUTAN) Dosen:

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

Pengertian Algoritma Pengurutan

PENGURUTAN BILANGAN METODE STRAIGHT SELECTION

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

METODE DEVIDE AND CONQUER

Array (Tabel) bagian 2

Algoritme dan Pemrograman

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

1. Algoritma Searching

SORTING ALGORITMA. Bubble Sort JANUARY 14, 2016

Metode Insertion Sort di Java Console

Kompleksitas Algoritma Sorting yang Populer Dipakai

SORTING. Brigida Arie Minartiningtyas, M.Kom

BAB VI SORTIR ATAU PENGURUTAN

ALGORITMA PEMOGRAMAN SEMESTER GENAP 2017/2018

Pengurutan (Sorting) Algoritma Pemrograman

Politeknik Elektronika Negeri Surabaya

Agar lebih mudah mengerti, cobalah untuk melakukan hal-hal berikut ini: 1. Bacalah terlebih dahulu ide dasar dari masing-masing algoritma.

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Sorting (Bubble Sort)

Sorting Algorithms. Divide and Conquer

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

SEARCHING & SORTING. Pendahuluan

Sorting Algorithms. Buble Sort

Politeknik Elektronika Negeri Surabaya

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

CCH1A4 / Dasar Algoritma & Pemrogramanan

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

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Pengurutan pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

MODUL IV PENCARIAN DAN PENGURUTAN

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

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

Transkripsi:

Sorting Pertemuan ke 14.

Sorting Sorting adalah proses pengurutan data berdasarkan key tertentu. Misalkan untuk data mahasiswa, key nya adalah NIM Kegunaan dari sorting adalah untuk mempercepat proses pencarian data (searching/retrieving). Sorting bisa dilakukan secara ascending(menaik : 1,2,3,4,5) atau descending(menurun: 5,4,3,2,1). Berdasarkan lokasi yang digunakan untuk pengurutan, sorting dibedakan menjadi : 1. internal sorting : dilakukan untuk data yang berada didalam RAM 2. external sorting : sorting dimana sejumlah data berada pada RAM dan selebihnya di secondary storage device. External sorting dipakai jika jumlah data sangat besar sehingga RAM tidak dapat menampung keseluruhan data.

Sorting: Bubble Sort. Bubble = gelembung udara didalam air. Gelembung yang ringan (dalam hal ini kecil) akan naik ke atas. proses: Putaran akan dilakukan sebanyak n-1. dimana n adalah jumlah elemen yang akan diurutkan. Elemen disusun dari kiri ke kanan, dimana elemen paling kiri ber-indeks 0, dan elemen paling kanan adalah elemen berindeks n-1. Pada putaran ke-i, akan didapatkan elemen terkecil dan akan menempati posisi elemen ber-indeks i-1. Pada setiap putaran dilakukan perbandingan data terakhir (n-1) dengan data sebelumnya (n-2), jika (n-1) < (n-2) maka tukarkan posisi kedua data tersebut. Proses yang sama dilakukan untuk (n-2) dan (n-3) demikian seterusnya.

Sorting: Bubble Sort.

Sorting: Bubble Sort.

Sorting: Bubble Sort.

Sorting: Bubble Sort.

Sorting: Bubble Sort.

Sorting: Bubble Sort. (1) void bubblesort(int arr[], int n) { //(Bubble ascending). (2) int i,j; (3) for(i=1;i<n;i++) //putaran (4) for(j=n-1 ; j>=i ; j--) //pembandingan antar elemen (5) if(arr[j-1] > arr[j]) tukar(&arr[j],&arr[j-1]); (6) } (1) Parameter berisi array yang akan diurutkan (arr) dan jumlah data didalam array (yaitu n) (2) Definisi variabel untuk looping. (3) Looping untuk berapa kali putaran ke xx. Jika n=6, maka putaran akan dilakukan sebanyak n-1 (5 kali). (4) Untuk setiap putaran ke xx, akan dilakukan banding-tukar antar elemen. Looping ini dilakukan mulai dari elemen PALING KANAN (j, yaitu n-1) dibandingkan dengan elemen sebelumnya(j-1, yaitu n-2). Begitu seterusnya sampai ketemu elemen yang sudah terurut (j=i, yaitu putaran ke xx ). (5) Jika elemen j-1(satu elemen dikiri j) > dari elemen j, maka tukar elemen array pada indeks [j-1] dengan [j].

Sorting: Selection Sort. Proses selection sort (ascending): Untuk n buah elemen data yang akan diurutkan, elemen paling kiri berindeks 0, elemen paling kanan berindeks n-1. 1) dibagi dalam n-1 putaran, untuk jumlah data n. Pada putaran pertama : dipilih elemen terkecil dan diletakkan pada posisi paling kiri, yaitu diposisi indeks 0. Pada putaran kedua : dipilih elemen terkecil kedua dan diletakkan pada posisi kedua dari kiri, yaitu diposisi indeks 1. Pada putaran ke-i : dipilih elemen terkecil ke-i dan diletakkan pada posisi ke-i dari kiri, yaitu diposisi indeks i-1.

Sorting: Selection Sort. 2) (untuk mencari nilai terkecil) dalam setiap putaran dilakukan perbandingan dengan elemen yang lain. Pada putaran ke-1, catat elemen terkecil di indeks 0. Bandingkan elemen pada indeks 0 dengan elemen pada indeks 1,2,,n-1. Jika ada elemen yang lebih kecil, catat indeksnya Pada putaran ke-2, catat elemen terkecil di indeks 1. Bandingkan elemen pada indeks 1 dengan elemen pada indeks 2,,n-1. Jika ada elemen yang lebih kecil, catat indeksnya Pada putaran ke-i, catat elemen terkecil di indeks i-1. Bandingkan elemen pada indeks i-1 dengan elemen pada indeks i,,n-1. Jika ada elemen yang lebih kecil, catat indeksnya (pada bubble sort, elemen data yang dipertukarkan, di Selection, baru mencatat indeksnya saja, pada akhir putaran baru elemen data ditukar).

Sorting: Selection Sort. 3) pada awal putaran ke-i, dicatat indeks elemen terkecil adalah i-1. Jika pada akhir putaran indek elemen terkecil yang dicatat tidak sama dengan i-1, maka datanya baru dipertukarkan. Selection sort hanya melakukan pertukaran data satu kali di setiap akhir putaran.

Sorting: Selection Sort.

Sorting: Selection Sort.

Sorting: Selection Sort.

Sorting: Selection Sort.

Sorting: Selection Sort.

Sorting: Selection Sort. (1) void selectionsort(int arr[], int n){ (2) int i,j,temp; (3) for ( i = 0 ; i < n-1 ; i++){ (4) temp = i; //temp untuk catat indeks elm terkecil (5) for(j = i+1; j < n; j++) (6) if(arr[j] < arr[temp]) temp = j; (7) if( temp!= i) tukar(&arr[temp],&arr[i]); } } (1) SelectionSort menerima 2 parameter : array yang berisi data yang akan di sort dan n adalah jumlah data yang berada didalam array. (2) Definisi variable untuk looping dan temp (3) Loop untuk jumlah putaran (yaitu sejumlah n-1) (4) Catat nilai i pada temp; digunakan sebagai indek awal dari elemen data terkecil. (5) (6) Loop ini digunakan untuk membandingkan data dari indek awal (temp) dengan data-data pada indeks berikutnya. Jika ada data yang lebih kecil, catat indeksnya (yaitu j) kedalam temp. (7) Jika loop (5)(6) selesai dan indeks pada temp sudah bergeser dari nilai originalnya (temp=i), maka data yang ada di temp (data[temp]) akan ditukar dengan data yang ada di indeks i (yaitu data[i]).

Sorting: Selection Sort. (1) void selectionsort(int arr[], int n){ (2) int i,j,temp; (3) for ( i = 1 ; i < n ; i++){ (4) temp = i-1; //temp untuk catat indeks elm terkecil (5) for(j = i; j < n; j++) (6) if(arr[j] < arr[temp]) temp = j; (7) if( temp!= i-1) tukar(&arr[temp],&arr[i-1]); } } (1) SelectionSort menerima 2 parameter : array yang berisi data yang akan di sort dan n adalah jumlah data yang berada didalam array. (2) Definisi variable untuk looping dan temp (3) Loop untuk jumlah putaran (yaitu sejumlah n-1) (4) Catat nilai i pada temp; digunakan sebagai indek awal dari elemen data terkecil. (5) (6) Loop ini digunakan untuk membandingkan data dari indek awal (temp) dengan data-data pada indeks berikutnya. Jika ada data yang lebih kecil, catat indeksnya (yaitu j) kedalam temp. (7) Jika loop (5)(6) selesai dan indeks pada temp sudah bergeser dari nilai originalnya (temp=i), maka data yang ada di temp (data[temp]) akan ditukar dengan data yang ada di indeks i (yaitu data[i]).

Sorting: Insertion Sort. Cara kerja insertion sort mirip dengan proses pengurutan kartu. Anggap setumpuk kartu untuk satu jenis (Heart) sebagai data yang acak yang akan diurutkan. Tangan kiri anda sebagai tempat untuk data yang urut, tangan kanan anda akan mengambil satu data dari tumpukan kartu. Misalkan tumpukan kartu berisi 9, 5, 10, 1,8 dianggap sebagai data awal yang akan diurutkan Step Tangan Kiri (Data yg sudah terurut) Tangan Kanan (Temp) Tumpukan Kartu Awal Proses Awal proses Data awal : 9, 5, 10, 1,8 1 9 9 5, 10, 1,8 2 5, 9 5 10, 1,8 3 5, 9, 10 10 1, 8 4 1, 5, 9, 10 1 8 5 1, 5, 8, 9, 10 8 -

Sorting: Insertion Sort.

Sorting: Insertion Sort.

Sorting: Insertion Sort.

Sorting: Insertion Sort.

Sorting: Insertion Sort.

Sorting: Insertion Sort. (1) void insertionsort(int arr[], int n) { (2) int i,j,temp; (3) for (i = 1; i < n; i++) { (4) temp = arr[i]; (5) j = i-1; (6) while (j >= 0 && temp < arr[j]) { (7) arr[j+1] = arr[j]; (8) j = j-1; (9) } (10) arr[j+1] = temp; (11) } (12)} (1) InsertionSort menerima 2 parameter : data yang akan di sort dalam bentuk array (arr) dan jumlah data yang ada di dalam arr tersebut (n). (2) Variabel untuk looping i,j dan menampung temporary (temp) (3) Loop untuk jumlah putaran; Jika data n maka jumlah putarannya n-1. (4) Data yang ada di posisi indek ke-i (arr[i]) disimpan ke temp. temp digunakan sebagai pembanding dengan data dalam array. (5) Loop dari posisi sebelum indek ke-i ke kiri DAN data dari arr[j] harus lebih besar dari temp (6) Geser posisi data j ke posisi j+1 (7) Jika keluar dari loop karena j >= 0 atau arr[j] sudah lebih kecil dari temp maka insert nilai temp ke posisi array (arr[j+1].

Sorting: Bubble, Insertion, Selection. (1) void bubblesort(int arr[], int n) { //(Bubble ascending). (2) int i,j; (3) for(i=1;i<n;i++) //putaran (4) for(j=n-1 ; j>=i ; j--) //pembandingan antar elemen (5) if(arr[j-1] > arr[j]) tukar(&arr[j],&arr[j-1]); (6) } (1) void selectionsort(int arr[], int n){ (2) int i,j,temp; (3) for ( i = 1 ; i < n ; i++){ (4) temp = i-1; //temp untuk catat indeks elm terkecil (5) for(j = i; j < n; j++) (6) if(arr[j] < arr[temp]) temp = j; (7) if( temp!= i-1) tukar(&arr[temp],&arr[i-1]); } } (1) void insertionsort(int arr[], int n) { (2) int i,j,temp; (3) for (i = 1; i < n; i++) { (4) temp = arr[i]; (5) j = i-1; (6) while (j >= 0 && temp < arr[j]) { (7) arr[j+1] = arr[j]; (8) j = j-1; (9) } (10) arr[j+1] = temp; (11) } (12)}

BUBBLE FLAG void bubblesort(struct takad data[], int n) { int i, j, terurut; } for (i = 0; i < n - 1; i++) { terurut = 1; // set nilai awal for (j = n - 1; j > i ; j--) if (data[j].ipk < data[j-1].ipk) { tukar (&data[j], &data[j-1]); terurut = 0; // ubah nilai } if (terurut == 1) break; // periksa nilai }

References : Thompson SN, 2009, Algoritma dan Struktur Data dengan C. Deitel, PJ, HM.Deitel, 2007, C How to Program, 5 th Edition.