• Tidak ada hasil yang ditemukan

Sorting. Pertemuan ke 14.

N/A
N/A
Protected

Academic year: 2021

Membagikan "Sorting. Pertemuan ke 14."

Copied!
29
0
0

Teks penuh

(1)

Sorting

(2)

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.

(3)

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 indeks 0, dan elemen paling kanan adalah elemen ber-indeks 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

(4)
(5)
(6)
(7)
(8)
(9)

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].

(10)

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.

(11)

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

(12)

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.

(13)
(14)
(15)
(16)
(17)
(18)

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]).

(19)

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]).

(20)

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

(21)
(22)
(23)
(24)
(25)
(26)

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].

(27)

Sorting: Bubble, Insertion, Selection.

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

(28)

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

}

}

(29)

References :

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

Referensi

Dokumen terkait

Dengan menggunakan metode SPT, jumlah proses produksi 1 unit Grapple Trakindo yang dapat diminimasi keterlambatannya ialah sebanyak 3 proses yaitu proses bending, tack welding

Teknik yang dilakukan dalam pengambilan darah ternak yaitu melalui vena jugularis dengan cara menegakkan kepala kambing kemudian menekan daerah sekitar leher untuk melihat

PENERAPAN STRATEGI REACT (RELATING, EXPERIENCING, APPLYING, COOPERATING, AND TRANSFERING) UNTUK MENINGKATKAN AKTIVITAS D AN HASIL BELAJAR SISWAUniversitas Pendidikan Indonesia |

kinerja yang disebabkan pada sumur siphon tersebut banyak dijumpai adanya butiran tanah halus yang ikut masuk ke sistem siphon sehingga masuk dan menempel pada dinding saluran,

proses dimulainya pemberian makanan proses dimulainya pemberian makanan khusus selain ASI secara bertahap jenis maupun konsistensinya sampai seluruh..

UMKM Pengrajin Panci “Lajuk” Porong terletak di Desa Lajuk Kecamatan Porong Kabupaten Sidoarjo. Desa Lajuk ini rata-rata penduduknya mata pencaharianya sebagai pengrajin. Hingga

Oleh karena itu tujuan penelitian adalah untuk menguji dan menganalisis faktor-faktor yang meliputi kesadaran membayar pajak, pengetahuan dan pemahaman peraturan

,QVHNWLVLGD EHUEDKDQ DNWLI RUJD QRIRVIDW OHELK NHFLO NRQVHQWUDVLQ\D GD ULSDGD NDUEDPDW EHQWXN ILVLN GDUL NHGXD LQVHNWLVLGD LQL MXJD EHUEHGD .ORUSLULIRV RUJDQRIRVIDW EHUEHQWXN FDLU