Sd pertemuan 3 & 4 (edited)

25
SORTING ARRAY Amidatus Sholihat

Transcript of Sd pertemuan 3 & 4 (edited)

Page 1: Sd   pertemuan 3 & 4 (edited)

SORTING ARRAY

Amidatus Sholihat

Page 2: Sd   pertemuan 3 & 4 (edited)

2

Pengertian Sorting

Proses mengurutkan data yang berada dalam suatutempat penyimpanan, dengan urutan tertentu yaituurutan naik (ascending) dari nilai terkecil hinggaterbesar atau urutan turun (descending) dari nilaiterbesar hingga nilai terkecil.

Dilihat dari tempat penyimpanan data, sort dibedakanantara external sort bila datanya ada dalam mediaexternal atau external storage seperti harddisk daninternal sort bila datanya ada dalam internal storageatau memory computer.

Page 3: Sd   pertemuan 3 & 4 (edited)

3

Tujuan Sorting

• Mendapatkan kemudahan dalam pencarian

anggota dari suatu himpunan, disamping

dapat mempercepat mengetahui data

terbesar dan data terkecil

Page 4: Sd   pertemuan 3 & 4 (edited)

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

Page 5: Sd   pertemuan 3 & 4 (edited)

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.

Page 6: Sd   pertemuan 3 & 4 (edited)

6

Bubble Sort

Sudah ada array satu dimensi sudah ada isinya,

diilustrasikan sebagai berikut :

Akan diurutkan ascending sehingga dihasilkan

urutan data seperti berikut:

Page 7: Sd   pertemuan 3 & 4 (edited)

7

Bubble Sort

Maka proses pengurutan tahap demi tahap dengan menggunakan

metode bubble sort adalah sebagai berikut :

Page 8: Sd   pertemuan 3 & 4 (edited)

8

Bubble Sort

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

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

Page 9: Sd   pertemuan 3 & 4 (edited)

9

F

l

o

w

c

h

a

r

t

Page 10: Sd   pertemuan 3 & 4 (edited)

10

Rumus Bubble Sort

for (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;

}

}

}

Page 11: Sd   pertemuan 3 & 4 (edited)

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.

Page 12: Sd   pertemuan 3 & 4 (edited)

12

F

l

o

w

c

h

a

r

t

Page 13: Sd   pertemuan 3 & 4 (edited)

13

Rumus Selection Sort

for ( 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;

}

Page 14: Sd   pertemuan 3 & 4 (edited)

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.

Page 15: Sd   pertemuan 3 & 4 (edited)

15

Insertion Sort

Tahap 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 kiriA[1] satu per satu jika nilai tersebut lebih besar dari x

Insert (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 kiriA[2] satu per satu jika nilai tersebut lebih besar dari x

Insert (sisipkan) x di bekas tempat nilai yang terakhir digeser.

Tahap berikutnya dan seterusnya hingga terakhir tahap ke N-1 (untuk arraydengan N elemen).

Instruksi pergeseran ke kanan adalah A[i]=A[i - 1], sehingga nilai A[i] akanhilang (ditimpa oleh nilai A[i-1] oleh karena itu pada awal tahap A[i] disimpanpada sebuah variabel.

Page 16: Sd   pertemuan 3 & 4 (edited)

16

F

l

o

w

c

h

a

r

t

Page 17: Sd   pertemuan 3 & 4 (edited)

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;

}

}

Page 18: Sd   pertemuan 3 & 4 (edited)

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

Page 19: Sd   pertemuan 3 & 4 (edited)

19

R

u

m

u

s

Q

u

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);

}

Page 20: Sd   pertemuan 3 & 4 (edited)

20

Merge Sort

• Pengurutan data yang jumlahnya besar,

dimana tidak semuanya dapat dimuat dalam

memori utama, sehingga harus disimpan

dalam penyimpanan sekunder berupa berkas

Page 21: Sd   pertemuan 3 & 4 (edited)

21

R

u

m

u

s

M

e

r

g

e

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;}

}

Page 22: Sd   pertemuan 3 & 4 (edited)

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

Page 23: Sd   pertemuan 3 & 4 (edited)

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;

}

}

Page 24: Sd   pertemuan 3 & 4 (edited)

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

Page 25: Sd   pertemuan 3 & 4 (edited)

25

Tugas

Buat presentasi mengenai variabel dan searching array