0 S/D n-tahap-1
L[j]
L[j]
L[j+1]
L[j+1]
tmp
AKHIR-JIKA
AKHIR-UNTUK
AKHIR-UNTUK
AKHIR-SUBRUTIN
Contoh (i) di bawah ini proses pengurutan dengan urut naik
dari kumpulan data berikut:
25 57 48 37 12 92 80 33
48 57
terjadi penukaran
37 57
terjadi penukaran
12 57
57 92
terjadi penukaran
tidak terjadi penukaran
80 92
terjadi penukaran
33 92
terjadi penukaran
Pengurutan tahap 2:
25 48 37 12 57 80 33 92 (hasil pengurutan tahap 1)
25 48
37 48
terjadi penukaran
12 48
terjadi penukaran
48 57
57 80
33 80
terjadi penukaran
25 57 48 37 12 92 80 33
Tahap 1
25 48 37 12 57 80 33 92
Tahap 2
25 37 12 48 57 33 80 92
Tahap 3
25 12 37 48 33 57 80 92
Tahap 4
12 25 37 33 48 57 80 92
Tahap 5
12 25 33 37 48 57 80 92
Tahap 6
12 25 33 37 48 57 80 92
Tahap 7
12 25 33 37 48 57 80 92
ada_penukaran
ULANG
BENAR
SELAMA
tahap
ada_penukaran
ada_penukaran
UNTUK j
SALAH
0 S/D n-tahap-1
n-1
DAN
ada_penukaran
BENAR
//lakukan penukaran
tmp
L[j]
L[j]
L[j+1]
L[j+1]
tmp
AKHIR-JIKA
AKHIR-UNTUK
tahap
tahap + 1
AKHIR-ULANG
AKHIR-SUBRUTIN
int I;
for (i=0; i < n; i++)
cout << data [i] << ;
cout << \n;
}
void bubble_sort (int data[], int n)
{
int tahap, j, tmp;
int ada_penukaran;
tahap = 1;
ada_penukaran = 1;
while (tahap < n-1 && ada_penukaran)
{
ada_penukaran = 0;
for (j = 0; j < n tahap; j++)
if (data[j] > data[j+1])
{
ada_penukaran = 1;
//tukarkan
tmp = data[j];
data[j] = data[j+1];
data[j+1] = tmp;
}
cout << hasil tahap << tahap << :;
tampilkan_larik(data,n);
tahap++;
}
}
int main()
{
const JUM_DATA = 8;
int i;
int data[] = {25, 57, 48, 37, 12, 92, 80, 33};
bubble_sort (data, JUM_DATA);
// hasil pengurutan
cout << hasil pengurutan:\n;
tampilkan_larik(data, JUM_DATA);
return 0;
}
Flowchart:
start
inisialisasi
tahap,j,i,tmp,ada
penukaran,data[],n
data[i],n
T
ada penukarkan
tidak ada
penukaran
tmp = data[j]
data[j] = data[j+1]
data[j+1] = tmp
hasil tahap
tahap++
i, data[]
hasil pengurutan
finish
Hasil progam bubble sort
C:\progc>bubble sort
Hasil tahap 1:
25 48 37 12 57 80 33 92
Hasil tahap 2:
25 37 12 48 57 33 80 92
Hasil tahap 3:
25 12 37 48 33 57 80 92
Hasil tahap 4:
12 25 37 33 48 57 80 92
Hasil tahap 5:
12 25 33 37 48 57 80 92
Hasil tahap 6:
12 25 33 37 48 57 80 92
Hasil pengurutan :
12 25 33 37 48 57 80 92
C:\progc>
mempunyai
posMi
j
AHIR-JIKA
AHIR-UNTUK
//Tukarkan
tmp
L[posAwal]
L[posAwal]
L[posMin]
L[posMin]
tmp
AHIR-UNTUK
AHIR-SUBRUTIN
Implementasi dala C++:
#include <iostream.h>
Void tampiplkan_larik(int data[], int n)
{
Int i;
for (i=0; i<n; i++)
Cout << data [i] << ;
Cout << \n;
}
Void selection_sort (int data[], int n)
{
Int posMin , pos Awal, j, tmp;
for (j=posAwal+1; j<n;j++)
if (data[posMin] > data [j])
posMin = j;
//Tukarkan
tmp=data[posAwal]
data[posAwal]=data[posMin];
data [posMin]=tmp;
25
27
26
25 35 67 27 26
35 sebagai posAwal dan 26 sebagai posMin
c)
25 26 67 27 35
67 sebagai posAwal dan 27 sebagai posMin
d)
25 26 27 67 35
67 sebagai posAwal dan 25 sebagai posMin
Hasil akhir 25 26 27 67 35
Flowchart selection sort
Strat
Inisialisasi i, j
temp= i
temp=j
tenp j=I
tukar
finish
+
Insertion Sort
Pengurutan dengan penyisipan (Insertion Sort) adalah
suatu metode yang melakukan pengurutan dengan cara
menyisipkan data yang belum terurut ke dalam bagian data
yang telah diurutkan. Konsep seperti ini biasa dilakukan pada
permainan kartu. Ketika sebuah kartu baru didapatkan (hasil
pembagian dari pengocokan kartu) kartu akan disisipkan oleh
pemain pada posisi yang tepat sehingga penambahan kartu
tersebut membuat semua kartu tetap terurutkan.
Berikut ini merupakan contoh program pengurutan
dengan penyisipan (Insertion sort) menggunakan C++:
# include <stdio.h>
main()
{
int n,i,temp,j,k;
int A[100];
printf ("Insertion sort \n");
printf ("Banyak data: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Data ke-%d: ",i+1);
scanf("%d",&A[i]);
}
for(i=1;i<n;i++)
{
temp=A[i];
j=i-1;
while(A[j]>temp)
{
A[j+1]=A[j];
j=j-1;
}
A[j+1]=temp;
}
printf("Setelah Urut \n");
for (i=0; i < n; i++)
printf("%d ",A[i]);
}
29
33
39
27
57
48
39
27
57
48
39
27
57
48
39
j=21=1
A[1] < temp
A[2]temp
0 = temp
57
i=3
0 = temp
48
[Type text]
Page 19
27
57
57
39
27
48
57
39
27
48
57
39
27
48
57
57
j=21=1
A[1] < temp
A[2]temp
0 = temp
48
i=4
0 = temp
39
j=41=3
A[3] > temp
A[4]A[3]
0 = temp
39
j=31=2
A[2] > temp
A[3]A[2]
0 = temp
[Type text]
Page 20
27
48
48
57
27
39
48
57
j=21=1
A[1] < temp
A[2]temp
0 = temp
39
int n,i,temp,j,k;
[Type text]
int A[100];
Page 21
for(i=0;i<n;i++)
A[i]
for(i=1;i<n;i++)
temp=A[i];
j=i-1;
while(A[j]>temp)
temp=A[i];
j=j-1;
A[j+1]=temp;
for(i=0;i<n;i++)
Insertion Sort
[Type text]
Banyak data:
Data ke- :
Setelah urut
Page 22