Anda di halaman 1dari 93

Algoritma Sorting

Bubble sort
Insertion sort
Heap sort
Merge sort
Quick sort
Selection sort
Shell sort
Pengurutan berdasarkan perbandingan (comparison-
based sorting)
Bubble sort, exchange sort
Pengurutan berdasarkan prioritas (priority queue sorting
method)
Selection sort, heap sort (menggunakan tree)
Pengurutan berdasarkan penyisipan dan
penjagaan terurut (insert and keep sorted method)
Insertion sort, tree sort
Pengurutan berdasarkan pembagian dan
penguasaan (devide and conquer method)
Quick sort, merge sort
Pengurutan berkurang menurun (diminishing
increment sort method)
Shell sort (pengembangan insertion)
Deklarasikan:
int data[100];
int n; //untuk jumlah data

Fungsi untuk Tukar 2 Buah Data (by reference):
void tukar(int *a,int *b){
int t=*a;
*a=*b;
*b=t;
}
algoritma pengurutan yang paling tua dan paling
sederhana dalam penggunaannya.
algoritma yang paling lambat.
Cara kerja:
bandingkan masing-masing item dalam list dengan
item berikutnya dan menukar jika diperlukan.
Algoritma berulang sampai tidak terjadi pertukaran
item lagi (semua item sudah pada urutan yang
benar).
nilai yang lebih besar berada pada akhir dan nilai
yang lebih kecil berada diawal list.


Proses pengurutan dengan bubble sort ini
menggunakan 2 looping. algoritmanya adalah
sbb:
1. ijumlah data-1
2. Selama i > 0 kerjakan no 3 sampai no 7
3. j 1
4. Selama j <= i kerjakan no 5 sampai no 6
5. Jika data[j-1] > data[j] tukarkan data
6. j j+1
7. i i-1
Contoh:
Terdapat 5 data dengan urutan 12 35 6 11 3

Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3














Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1













Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1



12

35

6

11

3










Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2


12

35

6

11

3










Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2


12
12
35
6
6
35
11
11
3
4









Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3

12
12

35
6

6
35
11
11
3
4









Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3

12
12
12
35
6
6
6
35
11
11
11
35
3
3
3









Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
35
6
6
6
35
11
11
11
35
3
3
3









Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
12
35
6
6
6
6
35
11
11
11
11
35
3
3
3
3
35









Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
12
35
6
6
6
6
35
11
11
11
11
35
3
3
3
3
35
i=3 j=1








Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
12
35
6
6
6
6
35
11
11
11
11
35
3
3
3
3
35
i=3 j=1


6 12 11 3 35





Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
12
35
6
6
6
6
35
11
11
11
11
35
3
3
3
3
35
i=3 j=1
j=2

6 12 11 3 35





Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
12
35
6
6
6
6
35
11
11
11
11
35
3
3
3
3
35
i=3 j=1
j=2

6
6
12
11
11
12
3
3
35
35





Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
12
35
6
6
6
6
35
11
11
11
11
35
3
3
3
3
35
i=3 j=1
j=2
j=3
6
6
12
11
11
12
3
3
35
35





Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
12
35
6
6
6
6
35
11
11
11
11
35
3
3
3
3
35
i=3 j=1
j=2
j=3
6
6
6
12
11
11
11
12
3
3
3
12
35
35
35





Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
12
35
6
6
6
6
35
11
11
11
11
35
3
3
3
3
35
i=3 j=1
j=2
j=3
6
6
6
12
11
11
11
12
3
3
3
12
35
35
35
i=2 j=1




Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
12
35
6
6
6
6
35
11
11
11
11
35
3
3
3
3
35
i=3 j=1
j=2
j=3
6
6
6
12
11
11
11
12
3
3
3
12
35
35
35
i=2 j=1

6 11 3 12 35


Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
12
35
6
6
6
6
35
11
11
11
11
35
3
3
3
3
35
i=3 j=1
j=2
j=3
6
6
6
12
11
11
11
12
3
3
3
12
35
35
35
i=2 j=1
j=2
6 11 3 12 35


Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
12
35
6
6
6
6
35
11
11
11
11
35
3
3
3
3
35
i=3 j=1
j=2
j=3
6
6
6
12
11
11
11
12
3
3
3
12
35
35
35
i=2 j=1
j=2
6
6
11
3
3
11
12
12
35
35


Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
12
35
6
6
6
6
35
11
11
11
11
35
3
3
3
3
35
i=3 j=1
j=2
j=3
6
6
6
12
11
11
11
12
3
3
3
12
35
35
35
i=2 j=1
j=2
6
6
11
3
3
11
12
12
35
35
i=1 j=1

Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
i=4 j=1
j=2
j=3
j=4
12
12
12
12
35
6
6
6
6
35
11
11
11
11
35
3
3
3
3
35
i=3 j=1
j=2
j=3
6
6
6
12
11
11
11
12
3
3
3
12
35
35
35
i=2 j=1
j=2
6
6
11
3
3
11
12
12
35
35
i=1 j=1 3 6 11 12 35

void bubbleSort(int numbers[], int array_size)
{ int i, j, temp;
for (i = (array_size - 1); i >= 0; i--)
{ for (j = 1; j <= i; j++)
{ if (numbers[j-1] > numbers[j])
{ temp = numbers[j-1];
numbers[j-1] = numbers[j];
numbers[j] = temp;
}
}
}
}

Cara kerja :
menyisipkan data dalam tempat yang sesuai pada akhir list.
Implementasi sederhana dari metode ini memerlukan 2
struktur list, source list dan dimana data yang terurut
disisipkan.

Algoritmanya sbb:
1. I 1
2. Kerjakan no 3 sampai 9 jika I < jumlah data
3. index data[I]
4. j I
5. Kerjakan no 6 sampai 7 jika j>0 dan data[j-1] > index
6. data[j] data[j-1]
7. j j-1
8. data[j] = index
9. I I+1
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1


Index = 35


Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12

Index = 35
35


6


11


3

Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2



Index = 6



Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2
j=2



12

35
Index = 6
6

11

3
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2
j=2



12

35
Index = 6
35

11

3
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2
j=2
j=1


12
12


35
35

Index = 6
35
35


11
11


3
3
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2
j=2
j=1


12
12


35
12

Index = 6
35
35


11
11


3
3
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3



Index = 11




Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3


6

12

35
Index = 11
11


3
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3


6

12

35
Index = 11
35


3
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2


6
6

12
12

35
35
Index = 11
35
35


3
3
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2


6
6

12
12

35
12

Index = 11
35
35


3
3
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2
j=1

6
6
6


12
12
12


35
12
12

Index = 11
35
35
35


3
3
3

Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2
j=1

6
6
6


12
12
11


35
12
12

Index = 11
35
35
35


3
3
3

Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12
Index = 35
35

6

11

3
I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2
j=1

6
6
6


12
12
11


35
12
12

Index = 11
35
35
35


3
3
3

I=4

Index=3
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12

Index = 35
35


6


11


3

I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2
j=1

6
6
6


12
12
11


35
12
12

Index = 11
35
35
35


3
3
3

I=4
j=4

6

11

12

35
Index=3
3
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12

Index = 35
35


6


11


3

I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2
j=1

6
6
6


12
12
11


35
12
12

Index = 11
35
35
35


3
3
3
3
I=4
j=4

6

11

12

35
Index=3
35
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12

Index = 35
35


6

11


3
I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2
j=1

6
6
6


12
12
11


35
12
12

Index = 11
35
35
35


3
3
3

I=4
j=4
j=3

6
6

11
11

12
12

35
35
Index=3
35
35

Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12

Index = 35
35


6


11


3

I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2
j=1

6
6
6


12
12
11


35
12
12

Index = 11
35
35
35


3
3
3

I=4
j=4
j=3

6
6

11
11

12
12

35
12
Index=3
35
35

Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12

Index = 35
35


6


11


3

I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2
j=1

6
6
6


12
12
11


35
12
12

Index = 11
35
35
35


3
3
3
I=4
j=4
j=3
j=2

6
6
6

11
11
11

12
12
12

35
12
12
Index=3
35
35
35

Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12

Index = 35
35


6


11


3

I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2
j=1

6
6
6


12
12
11


35
12
12

Index = 11
35
35
35


3
3
3

I=4
j=4
j=3
j=2

6
6
6

11
11
11

12
12
11

35
12
12
Index=3
35
35
35

Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12

Index = 35
35


6


11


3

I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2
j=1

6
6
6


12
12
11


35
12
12

Index = 11
35
35
35


3
3
3

I=4
j=4
j=3
j=2
j=1

6
6
6
6


11
11
11
11


12
12
11
11


35
12
12
12

Index=3
35
35
35
35

Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12

Index = 35
35


6


11


3

I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2
j=1

6
6
6


12
12
11


35
12
12

Index = 11
35
35
35


3
3
3

I=4
j=4
j=3
j=2
j=1

6
6
6
6


11
11
11
6


12
12
11
11


35
12
12
12

Index=3
35
35
35
35

Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=1
j=1


12

Index = 35
35


6


11


3

I=2
j=2
j=1
j=0

12
12
6

35
12
12
Index = 6
35
35
35

11
11
11

3
3
3
I=3
j=3
j=2
j=1

6
6
6


12
12
11


35
12
12

Index = 11
35
35
35


3
3
3

I=4
j=4
j=3
j=2
j=1
j=0

6
6
6
6
3

11
11
11
6
6

12
12
11
11
11

35
12
12
12
12
Index=3
35
35
35
35
35
void insertionSort(int numbers[], int array_size)
{ int i, j, index;
for (i=1; i < array_size; i++)
{ index = numbers[i];
j = i;
while ((j > 0) && (numbers[j-1] > index))
{ numbers[j] = numbers[j-1];
j = j - 1;
}
numbers[j] = index;
}
}

Selection sort bekerja dengan menyeleksi data
terkecil dari data yang belum terurut dan
kemudian menukar dengan item dalam posisi
berikutnya.

Prosesnya sebagai berikut:
Dilakukan pengulangan dari 0 sampai dengan (N-1).
Pada setiap pengulangan dicari data terkecil diantara
data(i+1) sampai data terakhir(N).
Data terkecil ini kemudian ditukar dengan data ke i
jika data terkecil tersebut lebih kecil dari data ke i.

1. I 0
2. Selama I < juml data-1 kerjakan no 3 sampai 9
3. min = I
4. j I+1
5. Selama j < juml data kerjakan no 6 sampai 7
6. Jika (data[j] < data[min]) maka min j
7. j j+1
8. Tukar data[I] dengan data[min]
9. I I+1
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0

MIN



Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
MIN





Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
MIN
MIN




Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
MIN
MIN




Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
MIN
MIN






MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
MIN
MIN






MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
MIN
MIN






MIN
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN






MIN
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN






MIN
MIN




MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1 MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
MIN
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
MIN
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
MIN
MIN
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
j=4
MIN
MIN
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
j=4
MIN



MIN
MIN
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
j=4




3
MIN



6

MIN
MIN
MIN
35




11




12
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
j=4




3
MIN



6

MIN
MIN
MIN
35




11




12
I=2 MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
j=4




3
MIN



6

MIN
MIN
MIN
35




11




12
I=2
j=3
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
j=4




3
MIN



6

MIN
MIN
MIN
35




11




12
I=2
j=3
MIN
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
j=4




3
MIN



6

MIN
MIN
MIN
35




11




12
I=2
j=3
j=4
MIN
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
j=4




3
MIN



6

MIN
MIN
MIN
35




11




12
I=2
j=3
j=4
MIN
MIN
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
j=4




3
MIN



6

MIN
MIN
MIN
35




11




12
I=2
j=3
j=4



3



6
MIN


11

MIN
MIN
35



12
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
j=4




3
MIN



6

MIN
MIN
MIN
35




11




12
I=2
j=3
j=4



3



6
MIN


11

MIN
MIN
35



12
I=3 MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
j=4




3
MIN



6

MIN
MIN
MIN
35




11




12
I=2
j=3
j=4



3



6
MIN


11

MIN
MIN
35



12
I=3
j=4
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
j=4




3
MIN



6

MIN
MIN
MIN
35




11




12
I=2
j=3
j=4



3



6
MIN


11

MIN
MIN
35



12
I=3
j=4
MIN
MIN
Iterasi Data[0] Data[1] Data[2] Data[3] Data[4]
Awal 12 35 6 11 3
I=0
j=1
j=2
j=3
j=4
MIN
MIN



3





35


MIN
MIN

6





11




MIN
12
I=1
j=2
j=3
j=4




3
MIN



6

MIN
MIN
MIN
35




11




12
I=2
j=3
j=4



3



6
MIN


11

MIN
MIN
35



12
I=3
j=4


3


6


11
MIN

12

MIN
35
void selectionSort(int numbers[], int array_size)
{ int i, j;
int min, temp;
for (i = 0; i < array_size-1; i++)
{ min = i;
for (j = i+1; j < array_size; j++)
{ if (numbers[j] < numbers[min])
min = j;
}
temp = numbers[i];
numbers[i] = numbers[min];
numbers[min] = temp;
}
}

Merge sort membagi data yang terurut menjadi dua
dan menempatkan dalam array terpisah.

Masing-masing array secara rekursif diurutkan dan
digabungkan kembali untuk membentuk data yang
terurut.

Proses penggabungannya sbb:
Misalnya T1 = 29 56 dan T2= 35 42
Mula-mulai diambil data pertama dari T1 yaitu 29 dan
data pertama dari T2 yaitu 35.
Data ini dibandingkan kemudian yang kecil diletakkan
pada hasil pengurutan misalnya T3.
Jadi T3 akan memiliki satu data yaitu 29.
Data yang lebih besar yaitu 35 dibandingkan dengan
data kedua pada T1 yaitu 56.
Karena lebih kecil maka 35 akan menjadi urutan kedua
pada T3.
Begitu seterusnya.



91
Merge
FirstPart SecondPart
FirstPart
SecondPart
A
A is sorted!
5 4 2 6 1 3 2 6
6 2 3 1 6 2 4 5
4 5 6 2 3 1 6 2
5 4 2 6 1 3 2 6
Split phase
0
1
2
3
level
6 6 5 4 3 2 2 1
5 4 2 6 1 3 2 6
5 4 6 2 3 1 6 2
6 3 2 1 6 5 4 2
Merge phase
0
1
2
3
level

Anda mungkin juga menyukai