sd pertemuan 3 & 4 (edited)
TRANSCRIPT
SORTING ARRAY
Amidatus Sholihat
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.
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 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.
9
F
l
o
w
c
h
a
r
t
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;
}
}
}
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
F
l
o
w
c
h
a
r
t
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;
}
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 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.
16
F
l
o
w
c
h
a
r
t
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
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);
}
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
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;}
}
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