materi : struktur data (3 sort)

Post on 16-Apr-2017

406 Views

Category:

Technology

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

SORTBY :

EKA PANDU CYNTHIA, S.T., M.KOM.

2

SORT Sort adalah suatu proses pengurutan

data yang sebelumnya disusun secara acak atau tidak teratur menjadi urut atau teratur menurut suatu aturan tertentu.

3

SORT Biasanya pengurutan dibagi menjadi 2

yaitu :Ascending Pengurutan dari kecil ke besarDescending Pengurutan dari besar ke kecil

4

SORT Ada banyak cara atau metode untuk

melakukan pengurutan ascending atau pun descending.

Dalam proses pengurutan kita akan memerlukan proses penukaran data.

Proses penukaran data tidak bisa kita lakukan secara langsung dengan menukar isi variabel.

Penukaran data dilakukan dengan metode swap.

5

SWAP Misalkan terdapat dua data yang akan

ditukar yaitu :

Cara yang salah :

Cara yang benar :

data[1] = 5;data[2] = 10;

data[1] = data[2];data[2] = data[1];

swap = data[1];data[1] = data[2];data[2] = swap;

6

SORT Untuk melakukan pengurutan terdapat

beberapa cara atau metode diantaranya :Bubble SortSelection Sort Insertion Sort

7

BUBBLE SORT Bubble Sort adalah suatu metode

pengurutan yang membandingkan elemen yang sekarang dengan elemen yang berikutnya.

Apabila elemen yang sekarang > elemen berikutnya, maka posisinya ditukar, jika tidak maka tidak perlu ditukar.

8

BUBBLE SORT Misalkan kita memiliki data acak

sebagai berikut :5, 34, 32, 25, 75, 42, 22, 2

9

BUBBLE SORT Data sebelumnya :

5, 34, 32, 25, 75, 42, 22, 2 Langkah ke 0 :

5 > 34 ? TIDAK (tetap) = 5, 34 34 > 32 ? YA (tukar) = 32, 34 34 > 25 ? YA (tukar) = 25, 34 34 > 75 ? TIDAK (tetap) = 34, 75 75 > 42 ? YA (tukar) = 42, 75 75 > 22 ? YA (tukar) = 22, 75 75 > 2 ? YA (tukar) = 2, 75

Hasil :5, 32, 25, 34, 42, 22, 2, 75

10

BUBBLE SORT Data sebelumnya :

5, 32, 25, 34, 42, 22, 2, 75 Langkah ke 1 :

5 > 32 ? TIDAK (tetap) = 5, 32 32 > 25 ? YA (tukar) = 25, 32 32 > 34 ? TIDAK (tetap) = 32, 34 34 > 42 ? TIDAK (tetap) = 34, 42 42 > 22 ? YA (tukar) = 22, 42 42 > 2 ? YA (tukar) = 2, 42 42 > 75 ? TIDAK (tetap) 42, 75

Hasil :5, 25, 32, 34, 22, 2, 42, 75

11

BUBBLE SORT Data sebelumnya :

5, 25, 32, 34, 22, 2, 42, 75 Langkah ke 2 :

5 > 25 ? TIDAK (tetap) = 5, 25 25 > 32 ? TIDAK (tetap) = 25, 32 32 > 34 ? TIDAK (tetap) = 32, 34 34 > 22 ? YA (tukar) = 22, 34 34 > 2 ? YA (tukar) = 2, 34 34 > 42 ? TIDAK (tetap) = 34, 42 42 > 75 ? TIDAK (tetap) = 42, 75

Hasil :5, 25, 32, 22, 2, 34, 42, 75

12

BUBBLE SORT Data sebelumnya :

5, 25, 32, 22, 2, 34, 42, 75 Langkah ke 3 :

5 > 25 ? TIDAK (tetap) = 5, 25 25 > 32 ? TIDAK (tetap) = 25, 32 32 > 22 ? YA (tukar) = 22, 32 32 > 2 ? YA (tukar) = 2, 32 32 > 34 ? TIDAK (tetap) = 32, 34 34 > 42 ? TIDAK (tetap) = 34, 42 42 > 75 ? TIDAK (tetap) = 42, 75

Hasil :5, 25, 22, 2, 32, 34, 42, 75

13

BUBBLE SORT Data sebelumnya :

5, 25, 22, 2, 32, 34, 42, 75 Langkah ke 4 :

5 > 25 ? TIDAK (tetap) = 5, 25 25 > 22 ? YA (tukar) = 22, 25 25 > 2 ? YA (tukar) = 2, 25 25 > 32 ? TIDAK (tetap) = 25, 32 32 > 34 ? TIDAK (tetap) = 32, 34 34 > 42 ? TIDAK (tetap) = 34, 42 42 > 75 ? TIDAK (tetap) = 42, 75

Hasil :5, 22, 2, 25, 32, 34, 42, 75

14

BUBBLE SORT Data sebelumnya :

5, 22, 2, 25, 32, 34, 42, 75 Langkah ke 5 :

5 > 22 ? TIDAK (tetap) = 5, 22 22 > 2 ? YA (tukar) = 2, 22 22 > 25 ? TIDAK (tetap) = 22, 25 25 > 32 ? TIDAK (tetap) = 25, 32 32 > 34 ? TIDAK (tetap) = 32, 34 34 > 42 ? TIDAK (tetap) = 34, 42 42 > 75 ? TIDAK (tetap) = 42, 75

Hasil :5, 2, 22, 25, 32, 34, 42, 75

15

BUBBLE SORT Data sebelumnya :

5, 2, 22, 25, 32, 34, 42, 75 Langkah ke 6 :

5 > 2 ? YA (tukar) = 2, 5 5 > 22 ? TIDAK (tetap) = 5, 22 22 > 25 ? TIDAK (tetap) = 22, 25 25 > 32 ? TIDAK (tetap) = 25, 32 32 > 34 ? TIDAK (tetap) = 32, 34 34 > 42 ? TIDAK (tetap) = 34, 42 42 > 75 ? TIDAK (tetap) = 42, 75

Hasil :2, 5, 22, 25, 32, 34, 42, 75

16

BUBBLE SORT Data Awal :

5, 34, 32, 25, 75, 42, 22, 2 Data Akhir :

2, 5, 22, 25, 32, 34, 42, 75

17

#include <iostream.h>#include <conio.h>#include <iomanip.h>

void main(){

int data[8] = {5, 34, 32, 25, 75, 42, 22, 2}; int swap; cout<<"Data sebelum diurutkan : "<<endl; for(int i=0; i<8; i++) { cout<<setw(3)<<data[i]; } cout<<endl; for(int i=0; i<7; i++) { for(int j=0; j<7; j++) { if(data[j] > data[j+1]) { swap = data[j]; data[j] = data[j+1]; data[j+1] = swap; } } } cout<<"Data setelah diurutkan : "<<endl; for(int i=0; i<8; i++) { cout<<setw(3)<<data[i]; } getch();}

18

SELECTION SORT Selection Sort adalah suatu metode

pengurutan yang membandingkan elemen sekarang dengan elemen berikutnya sampai ke elemen yang terakhir.

Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang maka dicatat posisinya dan langsung ditukar.

19

SELECTION SORT Misalkan kita memiliki data acak

sebagai berikut :5, 34, 32, 25, 75, 42, 22, 2

20

SELECTION SORT Langkah 0, data sebelumnya :

5, 34, 32, 25, 75, 42, 22, 2 Pembanding Posisi Terkecil

5 > 34 ? TIDAK 0 5 > 32 ? TIDAK 0 5 > 25 ? TIDAK 0 5 > 75 ? TIDAK 0 5 > 42 ? TIDAK 0 5 > 22 ? TIDAK 0 5 > 2 ? YA 7

Hasil, tukar posisi 0 dan posisi 7 :2, 34, 32, 25, 75, 42, 22, 5

21

SELECTION SORT Langkah 1, data sebelumnya :

2, 34, 32, 25, 75, 42, 22, 5 Pembanding Posisi Terkecil

34 > 32 ? YA 232 > 25 ? YA 325 > 75 ? TIDAK 325 > 42 ? TIDAK 325 > 22 ? YA 622 > 5 ? YA 7

Hasil, tukar posisi 1 dan posisi 7 :2, 5, 32, 25, 75, 42, 22, 34

22

SELECTION SORT Langkah 2, data sebelumnya :

2, 5, 32, 25, 75, 42, 22, 34 Pembanding Posisi Terkecil

32 > 25 ? YA 325 > 75 ? TIDAK 325 > 42 ? TIDAK 325 > 22 ? YA 622 > 34 ? TIDAK 6

Hasil, tukar posisi 2 dan posisi 6 :2, 5, 22, 25, 75, 42, 32, 34

23

SELECTION SORT Langkah 3, data sebelumnya :

2, 5, 22, 25, 75, 42, 32, 34 Pembanding Posisi Terkecil

25 > 75 ? TIDAK 325 > 42 ? TIDAK 325 > 32 ? TIDAK 325 > 34 ? TIDAK 3

Hasil, tukar posisi 3 dan posisi 3 :2, 5, 22, 25, 75, 42, 32, 34

24

SELECTION SORT Langkah 4, data sebelumnya :

2, 5, 22, 25, 75, 42, 32, 34 Pembanding Posisi Terkecil

75 > 42 ? YA 542 > 32 ? YA 632 > 34 ? TIDAK 6

Hasil, tukar posisi 4 dan posisi 6 :2, 5, 22, 25, 32, 42, 75, 34

25

SELECTION SORT Langkah 5, data sebelumnya :

2, 5, 22, 25, 32, 42, 75, 34 Pembanding Posisi Terkecil

42 > 75 ? TIDAK 542 > 34 ? YA 7

Hasil, tukar posisi 5 dan posisi 7 :2, 5, 22, 25, 32, 34, 75, 42

26

SELECTION SORT Langkah 6, data sebelumnya :

2, 5, 22, 25, 32, 34, 75, 42 Pembanding Posisi Terkecil

75 > 42 ? YA 7 Hasil, tukar posisi 6 dan posisi 7 :

2, 5, 22, 25, 32, 34, 42, 75

27

SELECTION SORT Data Awal :

5, 34, 32, 25, 75, 42, 22, 2 Data Akhir :

2, 5, 22, 25, 32, 34, 42, 75

28

#include <iostream.h>#include <conio.h>#include <iomanip.h>

void main(){

int data[8] = {5, 34, 32, 25, 75, 42, 22, 2}; int swap, terkecil; cout<<"Data sebelum diurutkan : "<<endl; for(int i=0; i<8; i++) { cout<<setw(3)<<data[i]; } cout<<endl; for(int i=0; i<7; i++) { terkecil = i; for(int j=i+1; j<8; j++) { if(data[terkecil] > data[j]) { terkecil = j; } } swap = data[i]; data[i] = data[terkecil]; data[terkecil] = swap; } cout<<"Data setelah diurutkan : "<<endl; for(int i=0; i<8; i++) { cout<<setw(3)<<data[i]; } getch();}

29

INSERTION SORT Metode Insertion Sort mirip dengan

cara mengurutkan kartu, kartu diambil selembar demi selembar dan disisipkan (insert) pada posisi seharusnya.

Proses pengurutan dimulai dari data ke 2 sampai data terakhir.

Data akan dibandingkan dengan posisi sebelumnya dan disisipkan pada posisi yang sesuai.

Pada proses penyisipan data, maka data-data yang lain akan bergeser ke belakang (kanan).

30

INSERTION SORT Misalkan kita memiliki data acak

sebagai berikut :95, 34, 32, 25, 75, 42, 22

31

INSERTION SORT Data sebelumnya :

95, 34, 32, 25, 75, 42, 22 Langkah 1, Temp = 34

J = 0 Temp < 95? YA Data Ke 1 = 9595, 95, 32, 25, 75, 42, 22

J = -1 STOP Hasil :

Data ke J+1 (0) = Temp (34)34, 95, 32, 25, 75, 42, 22

32

INSERTION SORT Data sebelumnya :

34, 95, 32, 25, 75, 42, 22 Langkah 2, Temp = 32

J = 1 Temp < 95? YA Data ke 2 = 9534, 95, 95, 25, 75, 42, 22

J = 0 Temp < 34? YA Data ke 1 = 3434, 34, 95, 25, 75, 42, 22

J = -1 STOP Hasil :

Data ke J+1 (0) = Temp (32)32, 34, 95, 25, 75, 42, 22

33

INSERTION SORT Data sebelumnya :

32, 34, 95, 25, 75, 42, 22 Langkah 3, Temp = 25

J = 2 Temp < 95? YA Data ke 3 = 9532, 34, 95, 95, 75, 42, 22

J = 1 Temp < 34? YA Data ke 2 = 3432, 34, 34, 95, 75, 42, 22

J = 0 Temp < 32? YA Data ke 1 = 3232, 32, 34, 95, 75, 42, 22

J = -1 STOP Hasil :

Data ke J+1 (0) = Temp (25)25, 32, 34, 95, 75, 42, 22

34

INSERTION SORT Data sebelumnya :

25, 32, 34, 95, 75, 42, 22 Langkah 4, Temp = 75

J = 3 Temp < 95? YA Data ke 4 = 9525, 32, 34, 95, 95, 42, 22

J = 2 Temp < 34? TIDAK STOP Hasil :

Data ke J+1 (3) = Temp (75)25, 32, 34, 75, 95, 42, 22

35

INSERTION SORT Data sebelumnya :

25, 32, 34, 75, 95, 42, 22 Langkah 5, Temp = 42

J = 4 Temp < 95? YA Data ke 5 = 9525, 32, 34, 75, 95, 95, 22

J = 3 Temp < 75? YA Data ke 4 = 7525, 32, 34, 75, 75, 95, 22

J = 2 Temp < 34? TIDAK STOP Hasil :

Data ke J+1 (3) = Temp (42)25, 32, 34, 42, 75, 95, 22

36

INSERTION SORT Data sebelumnya :

25, 32, 34, 42, 75, 95, 22 Langkah 6, Temp = 22

J = 5 Temp < 95? YA Data ke 6 = 9525, 32, 34, 42, 75, 95, 95

J = 4 Temp < 75? YA Data ke 5 = 7525, 32, 34, 42, 75, 75, 95

J = 3 Temp < 42? YA Data ke 4 = 4225, 32, 34, 42, 42, 75, 95

J = 2 Temp < 34? YA Data ke 3 = 3425, 32, 34, 34, 42, 75, 95

J = 1 Temp < 32? YA Data ke 2 = 3225, 32, 32, 34, 42, 75, 95

J = 0 Temp < 25? YA Data ke 1 = 2525, 25, 32, 34, 42, 75, 95

J = -1 STOP Hasil :

Data ke J+1 (0) = Temp (22)22, 25, 32, 34, 42, 75, 95

37

INSERTION SORT Data Awal :

22, 25, 32, 34, 42, 75, 95 Data Akhir :

38

#include <iostream.h>#include <conio.h>

void insertion_sort(int data[]){

int temp, j; for(int i=1; i<10; i++) { temp = data[i]; j = i-1; while(temp < data[j] && j>=0) { data[j+1] = data[j]; j--; } data[j+1] = temp; }}

void main(){

int data[10]={5,34,32,25,75,42,22,2,9,1};insertion_sort(data);for (int i=0;i<10;i++)

cout<<"data["<<i<<"]= : "<<data[i]<<endl; getch();}

top related