Sd pertemuan 3 & 4 (edited)

25
SORTING ARRAY Amidatus Sholihat

Transcript of Sd pertemuan 3 & 4 (edited)

SORTING ARRAY

Amidatus Sholihat

2

Pengertian Sorting

Proses mengurutkan data yang berada dalam suatu tempat penyimpanan, dengan urutan tertentu yaitu urutan naik (ascending) dari nilai terkecil hingga terbesar atau urutan turun (descending) dari nilai terbesar hingga nilai terkecil.

Dilihat dari tempat penyimpanan data, sort dibedakan antara external sort bila datanya ada dalam media external atau external storage seperti harddisk dan internal sort bila datanya ada dalam internal storage atau memory computer.

3

Tujuan Sorting

• Mendapatkan kemudahan dalam pencarian anggota dari suatu himpunan, disamping dapat mempercepat mengetahui data terbesar dan data terkecil

4

Metode sorting• Bubble sort• Selection sort• Insertion sort• Shell sort• Merge sort• Radix sort• Quick sort• Heap short

• Proses yang terjadi pada pengurutan adalah– Perbandingan data– Pertukaran data

Metode Sorting

5

Bubble Sort

Bubble artinya gelembung dan gelembung selalu mengapung.

Prinsip proses pengurutan dengan menggunakan metode bubble sort adalah

menempatkan (mengapungkan) nilai terbesar (jika urut ascending) atau nilai terkecil (jika urut descending) pada elemen ujung paling kanan pada tahap per tahapnya.

6

Bubble Sort

Sudah ada array satu dimensi sudah ada isinya, diilustrasikan sebagai berikut :

Akan diurutkan ascending sehingga dihasilkan urutan data seperti berikut:

7

Bubble Sort

Maka proses pengurutan tahap demi tahap dengan menggunakan metode bubble sort adalah sebagai berikut :

8

Bubble Sort

Dari array diatas yang terdiri dari 6 elemen dibutuhkan proses sebanyak 5 tahap maka untuk N elemen dibutuhkan (N-1) tahap proses pengurutan. Selanjutnya proses tahap per tahap akan diuraikan lebih rinci lagi.

Pada proses setiap tahap algoritma yang digunakan adalah proses banding (compare) dan tukar (swap). Bukan semata-mata meletakkan nilai terbesar ke ujung kanan, melainkan membandingkan nilai-nilai yang ada pada masing-masing elemen.

9

Flowchart

10

Rumus Bubble Sortfor (K = 0 ; K < N-1 ; K++){

for (i = 0 ; i < N-2-K ; i++){

if ( A[i] > A[i+1] ) {

x = A[i]; A[i] = A[i+1]; A[i+1] = x;}

} }

11

Selection Sort

Metode selection sort ini menggunakan proses pencarian (searching) kemudian tukar nilai yang dicari dengan nilai pada elemen awal.

Misalnya untuk pengurutan ascending, dicari nilai terkecil pertama kemudian tukar dengan elemen ke-0, selanjutnya dicari nilai terkecil kedua dan tukar dengan elemen ke-1 dan seterusnya.

12

Flowchart

13

Rumus Selection Sortfor ( i=0 ; i <= N-2 ; i++){

kecil = i;for ( k = i+1 ; k <= N-1 ; k++ ){

if (A[k] > A[j]){

kecil = k;}

}temp = A[i];A[i] = A[kecil];A[kecil] = temp;

}

14

Insertion Sort

• Metode ini dilakukan dengan penyisipan nilai data untuk suatu array misal A, yang tidak terurut ke dalam suatu tempat kosong misal C dan memastikan nilai data C selalu dalam keadaan terurut.

15

Insertion SortTahap 1 :Dimulai dari A[1]Simpan nilai A[1] pada sebuah variabel (misal x)Geser masing-masing satu langkah ke kanan semua nilai yang berada pada kiri A[1] satu per satu jika nilai tersebut lebih besar dari xInsert (sisipkan) x di bekas tempat nilai yang terakhir digeser. Tahap 2 :Simpan nilai A[2] pada variabel x.Geser masing-masing satu langkah ke kanan semua nilai yang berada pada kiri A[2] satu per satu jika nilai tersebut lebih besar dari xInsert (sisipkan) x di bekas tempat nilai yang terakhir digeser. Tahap berikutnya dan seterusnya hingga terakhir tahap ke N-1 (untuk array dengan N elemen).Instruksi pergeseran ke kanan adalah A[i]=A[i - 1], sehingga nilai A[i] akan hilang (ditimpa oleh nilai A[i-1] oleh karena itu pada awal tahap A[i] disimpan pada sebuah variabel.

16

Flowchart

17

Rumus Insertion SortFor (i=2; i<=N; i++){ temp = data[i]; j = i-1; while(temp < data[j] && j>1) { data[j+1] = data[j]; j = j-1; } if(temp >= data[j] data[j+1] = temp; else { data[j+1] = data[j]; data[j] = temp; }}

18

Quick Sort

• Metode pembagian dan penguasaan• Array misal A yang tidak terurut dibagi menjadi 2

sub bagian yakni array kiri dan array kanan. • Proses pengurutan kedua sub bagian array

menggunakan rekursif dan kemudian menggabungkan kembali 2 sub bagian array yang terurut untuk menghasilkan keseluruhan array yang terurut

19

Ru mu s Qu i c k S o r t

void quick(int a[], int left, int right){

int i,j, x, temp;i = left;j = right;x = a[(left+right)/2];do{

while(a[i]<x && i<right)++i;

while(a[j]>x && j>left)--j;

if(i<=j){

temp = a[i];a[i] = a[j];a[j] = temp;++i;--j;

}}while(i <= j);if(left<j)

quick(a, left,j);if(i<right)

quick(a, i, right);}

20

Merge Sort

• Pengurutan data yang jumlahnya besar, dimana tidak semuanya dapat dimuat dalam memori utama, sehingga harus disimpan dalam penyimpanan sekunder berupa berkas

21

Ru mu s Merge S o r t

void MergeSort(int x[], int n){

long aux[8], i, j, k, L1, L2, size, U1, U2; size = 1;while(size < n){

L1 = 0; k = 0;while(L1+size < n){

L2 = L1 + size;U1 = L2 -1;U2 = (L2+size-1 < n) ? L2+size-1 : n-

1;for(i=L1, j=L2; i<=U1 && j<=U2; k++)

if(x[i] <= x[j]) aux[k] = x[i++];

else aux[k] = x[j++];for(;i <= U1; k++)

aux[k] = x[i++];for(;j <= U2; k++)

aux[k] = x[j++];L1 = U2 + 1;}

for(i=L1;k<n;i++) aux[k++] = x[i];for(i=0;i<n;i++) x[i] = aux[i];size *=2;}

}

22

Heap Sort

• Heap merupakan pohon biner tanpa pointer dan mirip seperti pohon biner yang hampir penuh. Semua simpul (daun) terletak pada dua cabang terbawah dan simpul daun pada cabang paling bawah terletak di sebelah kiri sejauh mungkin

• Nilai dalam setiap simpul adalah lebih besar atau sama dengan anaknya

23

Rumus Heap Sort

void HeapSort(int a[], int size){

int i, f, s;for(i=1;i<size;i++){

int e = a[i];s = i;f = (s-1)/2;while(s > 0 && a[f] > e){

a[s] = a[f];s = f;f = (s-1)/2;

}a[s] = e;

}for(i=size; i>0; i--){

int value = a[i];a[i] = a[0];f = 0;if(i==1)

s = -1;else

s = 1;

if(i > 2 && a[2] > a[1])s = 2;

while(s >= 0 && value < a[s])

{a[f] = a[s];f = s;s = 2*f+1;

if(s+1 <= i-1 && a[s] < a[s+1])s = s+1;

if(s > i-1)s = -1;

}a[f] = value;

}}

24

Shell Sort

jarak = N/2;while(jarak > 0){ for(i=0; i<=N-jarak; i++)

{j=i+jarak;if(data[i] >data[j]){

temp = data[i];data[i] = data[j];data[j] = temp;

}}jarak = jarak/2;

}

Metode pengurutan dengan cara penukaran sepasang elemen dengan jarak tertentu

25

Tugas

Buat presentasi mengenai variabel dan searching array