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

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

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-7 Pencarian (Searching) 2

Algoritma dan Pemrograman. Pertemuan Ke-7 Statement Pengendalian 2

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-5 Rekursif

Algoritma dan Pemrograman. Pertemuan Ke-12 Tipe data array/larik 1

Algoritma dan Pemrograman. Pertemuan Ke-8 Statement Pengulangan 1

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-11 Pointer 2

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-6 Pencarian (Searching) 1

Algoritma dan Pemrograman. Pertemuan Ke-9 Statement Pengulangan 2

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-10 Pointer 1

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-3 Record/Struct dan Array Of Record

Algoritma dan Pemrograman. Pertemuan Ke-2 Dasar-dasar Algoritma

Algoritma dan Pemrograman

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-2 Array (Larik)

Algoritma dan Pemrograman. Pertemuan Ke-11 Function

RENCANA PEMBELAJARAN SEMESTER (RPS)

Algoritma dan Pemrograman. Pertemuan Ke-4 Konsep Tipe Data, Operator Dan Identifier

Algoritma dan Pemrograman. Pertemuan Ke-5 Input dan Output

Algoritma dan Pemrograman. Pertemuan Ke-1 Pengantar Algoritma

RENCANA PEMBELAJARAN SEMESTER (RPS)

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-13 Arsip (File) 2

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-14 Arsip (File) 3

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

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

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

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

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

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

Algoritma Heap Sort. Sekolah Teknik Elektro & Informatika Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung

Algoritma dan Pemrograman 2 PENGURUTAN

ALGORITMA PENGURUTAN & PENCARIAN

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

ANALISIS PERBANDINGAN METODE ALGORITMA QUICK SORT DAN MERGE SORT DALAM PENGURUTAN DATA TERHADAP JUMLAH LANGKAH DAN WAKTU

REVIEW ARRAY. Institut Teknologi Sumatera

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

7. SORTING DAN SEARCHING

Pengurutan (Sorting) Algoritma Pemrograman

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

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

Modul Praktikum Algoritma dan Struktur Data

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

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

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

Gambar 13.1 Ilustrasi proses algoritma sorting

Decrease and Conquer

BAB 8 SORTING DAN SEARCHING

A. TUJUAN PEMBELAJARAN

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

Algoritma Divide and Conquer (Bagian 1)

Pertemuan 2 ARRAY DIMENSI 1 & 2

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

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

Divide and Conqueradalah strategi militer yang dikenal dengan nama divide ut imperes.

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

ARRAY DIMENSI 1 & 2. Array dapat didefinisikan sebagai suatu himpunan hingga elemen yang terurut dan homogen.

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Sorting. Quick Sort

MODUL ALGORITMA DAN PEMROGRAMAN. STMIK AMIKOM Yogyakarta. Rajif Agung Yunmar, S.Kom., M.Cs.

*** SELAMAT MENGERJAKAN

Pengertian Algoritma Pengurutan

Algoritma Divide and Conquer (Bagian 2)

BAB VI Pengurutan (Sorting)

NASKAH UJIAN UTAMA. JENJANG/PROG. STUDI : DIPLOMA TIGA / MANAJEMEN INFORMATIKA HARI / TANGGAL : Kamis / 18 FEBRUARI 2016

PENGURUTAN (SORTING) 1. Overview

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

Kontrak Perkuliahan & Introduction

MODUL IV PENCARIAN DAN PENGURUTAN

Teknik Pengurutan Kartu Remi

SORTING. Brigida Arie Minartiningtyas, M.Kom

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

ALGORITMA DAN PEMROGRAMAN

Politeknik Elektronika Negeri Surabaya

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

Pengenalan Array. Array Satu Dimensi

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

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

Array (Larik) Modul 7

STRUKTUR DATA SORTING ARRAY

Searching [pencarian] Algoritma Pemrograman

Yudha Dwi P. N. S.Kom. Pertemuan 3 Aturan Penulisan Teks Algoritma

SENARAI BERANTAI (LINK LIST)

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

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

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

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

Algoritma Pemrograman & Struktur Data

Pencarian (Searching)

Modul 8 SORTING (PENGURUTAN)

Bab Tujuan. 6.2 Insertion Sort

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

PENGURUTAN DATA 2.1 Definisi Pengurutan 2.2 Metode-metode Pengurutan

ALGORITMA & PEMROGRAMAN II ARRAY

Perbandingan Algoritma Pengurutan Merge Sort, Quick Sort dan Heap Sort Dilihat dari Kompleksitasnya

Pengurutan (Sorting)

Transkripsi:

Algoritma dan Pemrograman Lanjut Pertemuan Ke-9 Pengurutan (Sorting) Disusun Oleh : Wilis Kaswidjanti, S.Si.,M.Kom. Jurusan Teknik Informatika Fakultas Teknologi Industri Universitas Pembangunan Nasional Veteran Yogyakarta

Algoritma dan Pemrograman Lanjut Judul Materi : Pengurutan (Sorting) Deskripsi Materi : Materi ini membahas metode sorting tak langsung Metode Shell Sort, Metode Quick Sort dan Metode Merge Sort dengan menggunakan tipe data array dan algoritma rekursif Tujuan Instruksional Khusus :. Memahami dan membandingkan metode sorting menggunakan tipe data array dan algoritma rekursif. Mengimplemetasikan penggunaan tipe data array 3. Mendeskripsikan berbagai metode sorting 4. Mengilustrasikan berbagai metode sorting menggunakan tipe data array Referensi : Buku Teks Munir, Rinaldi (00), Algoritma dan Pemrograman dalam Bahasa Pascal dan C, Buku, Edisi Ketiga, Penerbit Informatika Bandung,, Bab, hal 3-. Charibaldi, N. (004), Modul Kuliah Algoritma Pemrograman II, Edisi Kedua, Yogyakarta Buku Acuan/Referensi Brassard, Gilles (999), Fundamentals of algorithma, PrinteceHall. Jarne, Stroustrup B. (99), C++ Programming language, AT &T. Kristanto, Andri (003), Algoritma pemrograman C++, Graha Ilmu. Schildt,Herbert (000), The Complete Reference C++, McGraw-Hill. Sedgewick, R. (000), Algoritma Third edition In C part, Addison Wesley.

PENGURUTAN (SORTING) PENDAHULUAN Untuk melakukan proses pengurutan tidak langsung dapat menggunakan beberapa metode :. Shell Sort. Quick Sort 3. Merge Sort B. Metode pengurutan tidak langsung :. Shell Sort Disebut juga dengan istilah metode pertambahan menurun (dimishing increment) dari Donald L.Shell. Metoda ini memanfaatkan penukaran sepasang elemen untuk mencapai keadaan urut. Dua buah elemen ditukarkan dengan jarak tertentu. Rumus : Jarak pertama = N div Jarak berikutnya = jarak sebelumnya div Contoh : 4 4 38 0 A[] A[] A[3] A[4] A[] A[] A[] A[8] A[9] Sehingga : Jarak pertama = 9 div = 4 Jarak kedua = 4 div = Jarak ketiga = div =

Ilustrasi Jarak A[] A[] A[3] A[4] A[] A[] A[] A[8] A[9] Awal 4 4 38 0 Jarak = 4 4 4 38 0 4 38 4 0 4 38 4 0 4 38 0 4 Jarak = 4 38 0 4 38 4 0 4 0 4 38 4 0 38 4 4 0 38 4 4 0 38 4 4 0 38 4 4 Jarak = 0 38 4 4 0 38 4 4 0 38 4 4 0 38 4 4 0 4 38 4 0 4 38 4 0 4 38 4 0 4 38 4 0 4 38 4

Program berikut, memakai shell sort untuk mengurutkan array yang berisi 0 nilai acak: Contoh Program Shell Sort : /* Shell Sort */ #include <iostream.h> #include <stdlib.h> #include <conio.h> void shell_sort(int array[], int size) { int temp, gap, i, exchange_occurred; gap= size/; do { do { exchange_occurred= 0; for (i=0; i<size-gap; i++) if(array[i] > array[i+gap]) { temp= array[i]; array[i]= array[i+gap]; array[i+gap]= temp; exchange_occurred= ; while (exchange_occurred); while (gap= gap/); main() { int values[0], i; clrscr(); //data yang belum diurutkan diambil dari hasil random cout << "data yang belum urut : "<< endl; for (i=0; i<0; i++) { values[i]= rand()%00; cout << values[i] << " "; cout << endl; shell_sort(values, 0); //data yang sudah diurutkan cout << "data yang sudah diurutkan : "<< endl; for (i=0; i<0; i++) cout << values[i] << " "; getche();. Quick Sort Sering disebut dengan partion exchange sort. Langkah-langkah :

a. Misal vektor A yang memiliki N elemen. b. Dipilih sembarang elemen, biasanya elemen pertama, misal sebut saja X. c. Kemudian, semua elemen tersebut dengan menempatkan X pada posisi J sedemikian rupa sehingga : i. elemen s/d J- memiliki nilai lebih kecil dari X dan ii. elemen ke J+ s/d N memiliki nilai lebih besar dari X. d. Dengan demikian, terdapat dua buah subvektor. Contoh : N 4 4 38 0 Ilustrasi N 4 4 38 0 Subvektor Kiri X Subvektor Kanan 0 4 4 38 J- J+ N 0 4 4 38 0 4 38 4 0 4 38 4 0 4 38 4

Contoh Program Quick Sort : /* Quick Sort*/ #include <iostream.h> #include <stdlib.h> #include <conio.h> void quick_sort(int array[], int first, int last) { int temp, low, high, list_separator; low= first; high= last; list_separator= array[(first+last)/]; do { while (array[low]<list_separator) low++; while (array[high]>list_separator) high--; if (low<=high) { temp= array[low]; array[low++]= array[high]; array[high--]= temp; while (low<=high); if (first<high) quick_sort(array, first, high); if (low<last) quick_sort(array, low, last); main() { int values[00], i; clrscr(); //data yang belum diurutkan diambil dari hasil random cout << "data yang belum urut : "<< endl; for (i=0; i<00; i++) { values[i]= rand()%00; cout << values[i] << " "; cout << endl; quick_sort(values, 0, 99 ); //data yang sudah diurutkan cout << "data yang sudah diurutkan : "<< endl; for (i=0; i<00; i++) cout << values[i] << " "; getche();

3. Merge Sort Ide metode Merge Sort :. Pembagian array data menjadi dua bagian (bagian kiri dan bagian kanan) Ulangi langkah secara rekursi terhadap kedu abagian tersebut, sampai tiap subarray hanya terdiri dari satu elemen.. Gabungkan masing-masing bagian itu sekaligus mengurutkannya, sesuai pohon yang terbentuk saat membagi array, sampai membentuk array pertama saat sebelum dibagi. Ulangi langkah secara rekursi pula. Ilustrasi Merge Sort I 3 4 8 0 tengah = (+) div 8 0 tengah tengah 8 0 tengah tengah tengah 8 0

II 8 0 8 0 0 8 0 8 Algoritma MergeSortRekursi Deklarasi Type TipeData : Array[..00] of integer Data : TipeData n,i : integer Procedure MergeSort(input/output Data : TipaData; input awal,akhir : integer) Deskripsi output( Banyaknya elemen array : ) input(n) i traversal[..n] Data i random(n) output( Data yang belum terurut : ) i traversal[..n] output(data i )

MergeSort(Data,,n) output( Data yang sudah terurut : ) i traversal[..n] output(data i ) Procedure MergeSort(input/output Data : TipaData; input awal,akhir : integer) Deklarasi Lokal tengah : integer Procedure Merge(input/output Data : TipaData; input awalkiri,akhirkiri, awalkiri,akhirkiri : integer) Deskripsi if (awal<akhir) then tengah (awal+akhir) div MergeSort(Data,awal,tengah) MergeSort(Data,tengah+,akhir) Merge(Data,awal,tengah,tengah+,akhir) endif Procedure Merge(input/output Data : TipaData; input awalkiri,akhirkiri, awalkiri,akhirkiri : integer) Deklarasi Lokal temp : TipeData i,kiri,kanan : integer Deskripsi kiri awalkiri kanan awalkanan i awalkiri

while (kiri<=akhirkiri) or (kanan<=akhirkanan) do if (Data kiri <=Data kanan ) or (kanan>akhirkanan) then tempi Data kiri kiri kiri+ endif if (Data kiri >Data kanan ) or (kiri>akhirkiri) then tempi Data kanan kanan kanan+ endif i i + endwhile i traversal[awalkiri..akhirkanan] Data i temp i MergeSort bila ditest dengan data dari ilustrasi MergeSort(Data,,) MergeSort(Data,,) {tidak mengerjakan apa-apa MergeSort(Data,,) MergeSort(Data,,) {tidak mengerjakan apa-apa 3 Merge(Data,,,,) {gabung & urutkan data MergeSort(Data,,4) MergeSort(Data,3,3) {tidak mengerjakan apa-apa MergeSort(Data,3,4) MergeSort(Data,4,4) {tidak mengerjakan apa-apa MergeSort(Data,3,3,4,4) {gabung & urutkan data Merge(Data,,,3,4) {gabung & urutkan data MergeSort(Data,,) {tidak mengerjakan apa-apa MergeSort(Data,,) MergeSort(Data,,) {tidak mengerjakan apa-apa MergeSort(Data,,) 0 Merge(Data,,,,) {gabung & urutkan data MergeSort(Data,,) {tidak mengerjakan apa-apa Merge(Data,,,,) {gabung & urutkan data Merge(Data,,4,,) {gabung & urutkan data Keterangan : = memanggil = alur logik

PENUTUP Proses pengurutan tidak langsung dapat menggunakan beberapa metode : Shell Sort, Quick Sort dan Merge Sort. Metode pengurutan tak langsung, implementasinya dapat menggunakan fungsi rekursi. SOAL-SOAL. Tambahkan ketiga metode pengurutan tak langsung di atas untuk menampilan data dalam pengolahan data nilai suatu mata kuliah pada soal latihan kuliah pertemuan ke- 8.. Buat program menghitung nilai tengah (median) dari data-data integer yang diinput lewat keyboard, dan cari nilai Z dengan Z = (median). (Keterangan : cari dengan bantuan procedure pengurutan atau sorting. Perhatikan untuk data yang jumlahnya ganjil atau genap) Misal : Input : Data ke- = 3 Data ke- = Data ke-3 = Data ke-4 = Output : Median = 4 Z =