Algoritma dan Pemrograman 2 PENGURUTAN

dokumen-dokumen yang mirip
Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting)

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

Algoritma dan Pemrograman 2 PENGURUTAN

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

Pengurutan (Sorting) Algoritma Pemrograman

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

MODUL IV PENCARIAN DAN PENGURUTAN

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

BAB V SORTING (PENGURUTAN) INTERNAL

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

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

Kompleksitas Algoritma

Algoritma dan Pemrograman 2 PENCARIAN

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

PENGURUTAN DATA 2.1 Definisi Pengurutan 2.2 Metode-metode Pengurutan

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Kompleksitas Algoritma (1)

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

CCH1A4 / Dasar Algoritma & Pemrogramanan

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

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

Pengurutan (Sorting)

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

Array (Tabel) bagian 2

Algoritma Brute Force

ALGORITMA PENGURUTAN & PENCARIAN

Materi 4: SORTING (PENGURUTAN) Dosen:

Kompleksitas Algoritma

Powered by icomit.wordpress.com

Searching [pencarian] Algoritma Pemrograman

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

PENGAKSESAN BERKAS (FILE) DALAM C

Algoritma Brute Force

Bubble Sort (Pengurutan Gelembung / Pemberatan)

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

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

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

BAB XI ARRAY (LARIK)

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

Pendahuluan. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan efisien.

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

REVIEW ARRAY. Institut Teknologi Sumatera

Sorting. Pertemuan ke 14.

c. Hasil pencarian berupa nilai Boolean yang menyatakan status hasil pencarian. Versi 1 (Pembandingan elemen dilakukan sebagai kondisi pengulangan)

Identitas dosen POKOK BAHASAN. Suherman,, ST Address. : Cilegon Mobile : Ym Blog

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

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

Konsep Array dalam PBO

Pertemuan 2 ARRAY DIMENSI 1 & 2

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

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

PENGURUTAN (SORTING) 1. Overview

Sorting (Bubble Sort)

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

BAB VI SEARCHING (PENCARIAN)

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

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

BAB VI Pengurutan (Sorting)

Modul 8 SORTING (PENGURUTAN)

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

Kompleksitas Algoritma

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

Pengenalan Array. Array Satu Dimensi

Array Dimensi Satu. Pendahuluan. Slamet Kurniawan, S.Kom

Soal dan Jawaban Materi Graf, Pohon, dan Kompleksitas Algoritma

1 Pencarian. 1.1 Tinjauan Singkat Larik

Matematika Diskrit Kompleksitas Algoritma. Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

BAB VI SORTIR ATAU PENGURUTAN

Pertemuan 2 ARRAY DIMENSI 1 & 2

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

Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks. By. Rita Wiryasaputra, ST., M. Cs.

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

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

SORTING (Pengurutan)

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Pert 2 Struktur Data (mengajarkomputer.wordpress.com) ARRAY DIMENSI 1 & 2

BAB XII MENCARI DATA MAKSIMUM DAN MINIMUM

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Algoritma dan Pemrograman 1. By. Rita Wiryasaputra, ST., M. Cs.

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

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

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

ALGORITMA PEMROGRAMAN 1A** (PP :S1-KA) Pertemuan 7. Ahmad Hidayat

Decrease and Conquer

PENGULANGAN. pencacah harus bertipe integer atau karakter pernyataan adalah satu atau lebih instruksi yang. Pernyataan

Modul Praktikum Algoritma dan Struktur Data

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

Larik/Array ALGORITMA DAN PEMROGRAMAN [IS ] Dosen: Yudha Saintika, S.T., M.T.I

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

Algoritma Divide and Conquer (Bagian 1)

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

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

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

Transkripsi:

Algoritma dan Pemrograman 2 PENGURUTAN Pengurutan : proses mengatur sekumpulan obyek meurut urutan atau susunan tertentu. Urutan menaik(ascending) : L[0] L[1] L[2] L[n] Urutan menurun(descending) : L[0] L[1] L[2] L[n] Contoh : a. data bertipe integer terurut naik: 23 30 40 45 60 b. data bertipe riil terurut menurun: 100,1 60,3 50,4 40,5 10,7 c. data bertipe string terurut naik: Amir Badu Cecep Dudi Rudi d. data bertpe karakter terurut naik: d e g l m e. data terstruktur terurut naik berdasarkan field NIM 135901, Eko, A 135902, Edo, A 135903, Dudi, B 135904, Amir, A Keuntungan dari data yang terurut: - mempercepat proses pencarian - langsung diperoleh nilai maksimum dan minimum Metode pengurutan diklasifikasikan menjadi dua: a. Internal : metode pengurutan untuk data yang disimpan di dalam memori komputer. Umumnya struktur internal yang dipakai untuk mengurutkan internal adalah larik, sehingga pengurutan internal disebut juga pengurutan larik. b. Eksternal : metode pengurutan untuk data yang disimpan didalam disk storage, disebut juga pengurutan arsip (file), karena struktur eksternal yang digunakan adalah arsip.

Algoritma dan Pemrograman 3 I. METODE PENGURUTAN APUNG (BUBBLE SORT) Metode ini diinspirasi oleh gelembung sabun yang berada diatas permukaan air. Gelembung sabun selalu terapung ke atas permukaan air karena berat jenisnya lebih ringan daripada berat jenis air. Jika sebuah array dengan jumlah elemen (ukuran array) sebesar N maka proses pengapungan dilakukan sebanyak N-1 langkah (satu langkah disebut satu pass). Proses pengapungan dilakukan dengan cara perbandingan. Jumlah langkah = N - 1 Jumlah perbandingan = N(N - 1)/2 Algoritma Pengurutan Apung : L = 30 60 35 70 50 25 20 40 43 k = 0 1............ n Untuk mendapatkan larik yang terurut menaik, algoritma pengurutan apung secara global sbb: Untuk setiap pass i=1, 2,, n, lakukan : Mulai dari elemen k=n, n-1,, i 1) Bandingkan L[k] dengan L[k-1] 2) Pertukarkan L[k] dengan L[k-1] jika L[k] L[k-1] Contoh : Tinjau L dengan N = 6 buah elemen belum terurut (n = 5) : L = 25 27 10 8 76 21 k = 0 1 2 3 4 5

Pass 1: k Elem. yg dibandingkan Pertukarkan? Hasil Sementara 5 4 3 2 1 L[5] L[4] L[4] L[3] L[3] L[2] L[2] L[1] L[1] L[0] Hasil akhir pass-1: 8 25 27 10 21 76 Tidak 25, 27, 10, 8, 21, 76 25, 27, 10, 8, 21, 76 25, 27, 8, 10, 21, 76 25, 8, 27, 10, 21, 76 8, 25, 27, 10, 21, 76 Pass 2 (berdasarkan hasil akhir pass 1) : k Elem. yg dibandingkan Pertukarkan? Hasil Sementara 5 4 3 2 L[5] L[4] L[4] L[3] L[3] L[2] L[2] L[1] Hasil akhir pass-2: 8 10 25 27 21 76 Tidak Tidak 8, 25, 27, 10, 21, 76 8, 25, 27, 10, 21, 76 8, 25, 10, 27, 21, 76 8, 10, 25, 27, 21, 76 Pass 4 (berdasarkan hasil akhir pass-3) k Elem. yg dibandingkan Pertukarkan? Hasil Sementara 5 4 L[5] L[4] L[4] L[3] Hasil akhir pass-4: 8 10 21 25 27 76 Tidak Tidak 8, 10, 21, 25, 27, 76 8, 10, 21, 25, 27, 76 Pass 5 (berdasarkan hasil akhir pass-4) k Elem. yg dibandingkan Pertukarkan? Hasil Sementara 5 L[5] L[4] Tidak 8, 10, 21, 25, 27, 76 Hasil akhir pass-5: 8 10 21 25 27 76 Hasil akhir pass-5 menyisakan satu elemen (yaitu 76) yang tidak perlu diurutkan, maka pengurutan selesai. Pass 3 (berdasarkan hasil akhir pass-2) k Elem yg dibandingkan Pertukarkan? Hasil Sementara 5 4 3 L[5] L[4] L[4] L[3] L[3] L[2] Hasil akhir pass-3: 8 10 21 25 27 76 Tidak 8, 10, 25, 27, 21, 76 8, 10, 25, 21, 27, 76 8, 10, 21, 25, 27, 76

Algoritma pengurutan apung menaik: procedure BubbleSort(input/output L : LarikInt, input n : integer) Keadaan Awal : Elemen larik L sudah terdefinisi nilai-nilainya Keadaan Akhir : Elemen larik L terurut menaik DEKLARASI i : integer pencacah untuk jumlah langkah k : integer pencacah untuk pengapungan pada setiap langkah tmp : integer variabel bantu untuk pertukaran DESKRIPSI for i 1 to n do for k n downto i do if L(k) < L(k 1) then tmp L[k] L[k] L[k 1] L[k 1] tmp endif endfor endfor Metode pengurutan ini merupakan metode yang tidak efisien untuk data yang besar, disebabkan oleh banyaknya operasi pertukaran yang dilakukan pada setiap langkah pengapungan.

Algoritma dan Pemrograman 6 Translasi algoritma pengurutan dengan metode bubble sort kedalam bahasa C sbb: /*Mengurutkan data dengan metode Bubble Sort*/ #include<iostream.h> void BubbleSort(int data[],int n); //prototipe fungsi void main(void) int i; int n=9;//jml Data = 10 maka n = 9 int data[]=20,10,32,100,60,12,70,25,45,65; cout<<"sebelum diurutkan :"<<endl; for(i=0;i<=n;i++) cout<<data[i]<<" "; cout<<endl; cout<<" "<<endl; BubbleSort(data,n); /*Pemanggilan fungsi BubbleSort*/ cout<<"setelah diurutkan"<<endl; for(i=0;i<=n;i++) cout<<data[i]<<" "; cout<<endl; void BubbleSort(int array1[],int n) int i,k,tmp; for(i=1;i<=n;i++) for(k=n;k>=i;k--) if(array1[k]<array1[k-1]) tmp=array1[k]; array1[k]=array1[k-1]; array1[k-1]=tmp; II. METODE PENGURUTAN SELEKSI (SELECTION SORT) Gagasan metode ini adalah memilih elemen maksimum/minimum dari array, lalu menempatkan elemen maksimum/minimum itu pada ujung (awal atau akhir) array. Selanjutnya elemen terujung tersebut diisolasi dan tidak disertakan pada proses selanjutnya. Proses yang sama diulang untuk elemen larik yang tersisa. Pemilihan nilai maksimum/ minimum dilakukan pada setiap pass.

Algoritma dan Pemrograman 7 Ditinjau dari pemilihan elemen maksimum/minimum, algoritma pengurutan seleksi dibagi menjadi dua: 1. Algoritma pengurutan seleksi-maksimum, yaitu memilih elemen maksimum sebagai basis pengurutan 2. Algoritma pengurutan seleksi-minimum, yaitu memilih elemen minimum sebagai basis pengurutan Algoritma pengurutan seleksi-maksimum Untuk memperoleh array dengan jumlah elemen N yang terurut menaik, algoritma pengurutan seleksimaksimum dapat ditulis secara garis besar sebagai berikut: Jumlah pass : n = N 1 Jumlah perbandingan : N(N + 1)/2 Untuk setiap pass i = 1, 2,, n; lakukan: 1) Cari elemen terbesar (maks) mulai dari elemen pertama (ke-0) sampai elemen terakhir (ke-n) 2) Pertukarkan maks dengan elemen ke-n 3) Kurangi n dengan satu (karena elemen ke-n sudah terurut) procedure SelectionMax(input/output L : LarikInt, input n : integer) DEKLARASI i : integer pencacah pass j : integer pencacah untuk mencari nilai maksimum imaks : integer indeks yg berisi nilai maksimum sementara tmp : integer variabel bantu untuk pertukaran

Algoritma dan Pemrograman 8 DESKRIPSI: for i n downto 1 do imaks 0 for j 1 to i do if L[j] > L[imaks] then imaks j endif endfor tmp L [i] L[i] L[imaks] L[imaks] tmp endfor Contoh: Urutkan elemen larik berikut secara menaik: Elemen : 25 27 10 8 76 21 Index : 0 1 2 3 4 5 Pass 1 : Cari elemen maksimum didalam array L[0 5] hasilnya : maks = L[4] = 76. Pertukarkan maks dengan L[n], diperoleh: 25 27 10 8 21 76

Algoritma dan Pemrograman 9 Pass 2 (berdasarkan susunan larik hasil pass 1) : Cari elemen maksimum didalam array L[0 4] hasilnya : maks = L[1] = 27. Pertukarkan maks dengan L[4], diperoleh: 25 21 10 8 27 76 Pass 3(berdasarkan susunan larik hasil pass 2) : Cari elemen maksimum didalam array L[0 3] hasilnya : maks = L[0] = 25. Pertukarkan maks dengan L[3], diperoleh: 8 21 10 25 27 76 Pass 4 (berdasarkan susunan larik hasil pass 3) : Cari elemen maksimum didalam array L[0 2] hasilnya : maks = L[1] = 21. Pertukarkan maks dengan L[2], diperoleh: 8 10 21 25 27 76 Pass 5 (berdasarkan susunan larik hasil pass 4) : Cari elemen maksimum didalam array L[0 1] hasilnya : maks = L[1] = 10. Pertukarkan maks dengan L[1], diperoleh: 8 10 21 25 27 76 Tersisa satu elemen (yaitu 8), maka pengurutan selesai. Array sudah terurut naik.

Algoritma dan Pemrograman 10 Translasi algoritma pengurutan seleksi-maksimum kedalam bahasa C : /*Mengurutkan data dengan metode Seleksi Maksimum*/ #include<iostream.h> void SeleksiMaksimum(int data[],int n); /*prototipe fungsi*/ void main(void) int i; int n=9;//index terbesar int data[]=20,10,32,100,60,12,70,25,45,65; cout<<"sebelum diurutkan :"<<endl; for(i=0;i<=n;i++) cout<<data[i]<<" "; cout<<endl; cout<<" "<<endl; SeleksiMaksimum(data,n); cout<<"setelah diurutkan"<<endl; for(i=0;i<=n;i++) cout<<data[i]<<" "; cout<<endl; void SeleksiMaksimum(int array1[],int n) int i,j,tmp,imaks; for(i=n;i>=1;i--) imaks=0; for(j=1;j<=i;j++) if(array1[j]>array1[imaks]) imaks=j; tmp=array1[imaks]; array1[imaks]=array1[i]; array1[i]=tmp; Algoritma pengurutan-minimum menaik : Basis pencarian adalah elemen minimum (terkecil). Elemen minimum ditempatkan di awal larik. Algoritma seleksi-minimum untuk memperoleh larik yang terurut menaik sbb : Untuk setiap pass i = 0, 1, 2,, n-1, lakukan 1) Cari elemen terkecil (min) mulai dari elemen ke i sampai elemen ke n. 2) Pertukarkan min dengan elemen ke i.

Algoritma dan Pemrograman 11 procedure SelectionMin(input/output L : LarikInt, input n : integer) DEKLARASI i : integer pencacah pass j : integer pencacah untuk mencari nilai minimum imin : integer indeks yg berisi nilai minimum sementara tmp : integer variabel bantu untuk pertukaran DESKRIPSI: for i 0 to n-1 do imin 0 for j i+1 to n do if L[j] < L[imin] then imin j endif endfor tmp L [i] L[i] L[imin] L[imin] tmp endfor Contoh: Urutkan elemen larik berikut secara menaik: Elemen : 29 27 10 8 76 21 Index : 0 1 2 3 4 5

Algoritma dan Pemrograman 12 Pass 0 : Cari elemen terkecil didalam array L[0 5] hasilnya : min = L[3] = 8. Pertukarkan min dengan L[0], diperoleh: 8 27 10 29 76 21 Pass 1 (berdasarkan susunan larik hasil pass 0) : Cari elemen terkecil didalam array L[1 5] hasilnya : min = L[2] = 10. Pertukarkan min dengan L[1], diperoleh: 8 10 27 29 76 21 Pass 2 (berdasarkan susunan larik hasil pass 1) : Cari elemen terkecil didalam array L[2 5] hasilnya : min = L[5] = 21. Pertukarkan min dengan L[2], diperoleh: 8 10 21 29 76 27 Pass 3 (berdasarkan susunan larik hasil pass 2) : Cari elemen terkecil didalam array L[3 5] hasilnya : min = L[5] = 27. Pertukarkan min dengan L[3], diperoleh: 8 10 21 27 76 29 Pass 4 (berdasarkan susunan larik hasil pass 3) : Cari elemen terkecil didalam array L[4 5] hasilnya : min = L[5] = 29. Pertukarkan min dengan L[4], diperoleh: 8 10 21 27 29 76 Tersisa satu elemen (yaitu 76), maka pengurutan selesai. Array sudah terurut naik.

Algoritma dan Pemrograman 13 Translasi algoritma pengurutan seleksi-minimum kedalam bahasa C : /*Mengurutkan data dengan metode Seleksi Minimum*/ #include<iostream.h> void SeleksiMinimum(int data[],int n); /*prototipe fungsi*/ void main(void) int i; int n=9;//index terbesar int data[]=20,10,32,100,60,12,70,25,45,65; cout<<"sebelum diurutkan :"<<endl; for(i=0;i<=n;i++) cout<<data[i]<<" "; cout<<endl; cout<<" "<<endl; SeleksiMinimum(data,n); cout<<"setelah diurutkan"<<endl; for(i=0;i<=n;i++) cout<<data[i]<<" "; cout<<endl; void SeleksiMinimum(int array1[],int n) int i,j,tmp,imin; for(i=0;i<=n-1;i++) imin=i; for(j=i+1;j<=n;j++) if(array1[j]<array1[imin]) imin=j; tmp=array1[imin]; array1[imin]=array1[i]; array1[i]=tmp;

Algoritma dan Pemrograman 14 TUGAS 1. Tulislah algoritma untuk pengurutan secara menurun menggunakan metode bubble sort dan metode selection sort(min dan max). 2. Buatlah programnya menggunakan C++ untuk array sbb: 10 40 20 60 15 4 8 100 200 25