PENGURUTAN DATA A. Tuuan Pembahasan dalam bab n adalah mengena pengurutan data pada sekumpulan data. Terdapat beberapa metode untuk melakukan pengurutan data yang secara detl akan dbahas ddalam bab n. Tuuan dar akhr pembahasan n, pembaca dharapkan: 1. Memaham konsep pengurutan data dengan beberapa metode yatu buble sort, selecton, nserton sort, quck sort, dan merger sort 2. Mampu menganalsa metode-metode pengurutan data sehngga dapat memlh metode yang tepat dalam melakukan pngurutan data. B. Pengurutan (Sortng) Sekumpulan data yang banyak, dalam pemanfaatanya kadang-kadang dperlukan suatu pengrutan (sortng). Dalam kenyataanya, banyak sekal kasus yang dapat dumpa. Sebaga contoh daftar nama pegawa atau lembar absens basanya dcetak berdasarkan urutan abad. Buku-buku ddalam perpustakaan dsusun berdasarkan urutan tertentu. Pengurutan data basanya uga dgunakan untuk mempermudah pencaran data. Pengurutan atau sortng merupakan sebuah proses untuk menyusun kembal kumpulan entr-entr data yang telah dmasukan dengan suatu aturan tertentu. secara umum terdapat dua macam pengurutan yatu pengurutan secara menak (ascendng) dan pengurutan secara menurun (descendng). Pada saat data dmasukan kedalam komputer, proses memasukan data tersebut tdak dlakukan pengurutan terlebh dahulu. Beberapa hal yang menyebabkan data tdak durutkan pada saat dmasukan adalah proses memasukan data secara keseluruhan tdak selalu dmasukan pada saat yang sama, selan tu dbutuhkan waktu yang cukup lama untuk melakukan pengurutan data secara manual. Proses pengurutan data akan lebh mudah apabla data telah dmasukkan kedalam komputer dan proses pengurutan n akan dlakukan oleh komputer. 1
C. Metode Pengurutan Data Pengurutan data terdapat beberapa metode yang dapat dgunakan. Metode-metode pengurutan data tersebut adalah metode penyspan (nserton sort), metode gelembung (buble sort), metode seleks (selecton sort), metode penggabungan (merge sort), dan metode quck sort. Metode-metode tersebut akan secara detl dbahas dalam baganbagan berkutnya. 1. Metode Gelembung(Buble Sort) Metode pengurutan data secara gelembung adalah metode pengurutan data dengan cara menukar data yang memlk nla besar akan berpndah pada ndeks yang besar sedangkan data dengan nla kecl akan berpndah pada ndeks yang kecl. Proses berpndahnya data yang satu dengan data yang lan dlkukan dengan penukaran. Metode n serng dsebut uga dengan metode exchange (penukaran). Proses pertukaran data pada metode gelembung n dlakukan mula data yang pertama. Data yang pertama akan dbandngkan dengan data berkutnya, ka data berkutnya lebh kecl dar data pertama maka dlakukan penukaran. Perbandngan n dlakukan mula dar data ke dua sampa dengan data terakhr. Untuk memberkan gambaran yang lebh detl dar algortma pengurutan data dengan metode gelembung dberkan sebah data yatu: 10,9,6,8,2,3,1,7 pada fase pertama, data pertama (10) akan dbandngkan dengan data kedua (9), karena data kedua lebh kecl maka data akan dtukar sehngga 9,10,6,8,2,3,1,7. Berkutnya data pertama (9) akan dbandngkan dengan data ketga (6), karena data ketga lebh kecl dar data pertama maka dlakukan penukaran sehngga data menad 6,10,9,8,2,3,1,7. Selanutnya data pertama (6) akan dbandngkan dengan data keempat (8) karena data pertama lebh kecl maka tdak dlakukan penukaran dan data mash tetap. Data pertama (6) akan dbandngkan dengan data kelma (2), karena data kelma lebh kecl maka dlakukan penukaran sehngga data menad 2,10,9,8,6,3,1,7. Selanutnya data pertama (2) akan dbandngkan dengan data keenam (3), karena data keenam lebh besar maka tdak dlakukan penukaran. Selanutnya data pertama (2) akan dbandngkan dengan data ketuuh (1), karena data ketuuh lebh kecl maka dlakukan penukaran sehngga data 2
menad 1,10,9,8,6,3,2,7. Akhr dar fase pertama data pertama (1) dbandngkan dengan data terakhr (7), karena data terakhr lebh besar maka tdak dlakukan penukaran. Dar fase yang pertama n dperoleh sebuah nla terkecl akan menempat pada ndeks yang pertama. Pada fase kedua dlakukan perbandngan mula data kedua terhadap data setelah data kedua sampa data terakhr. Dengan cara yang sama pada fase pertama maka akan dperoleh data terkecl kedua akan menempat ndeks kedua. Demkan langkah n dlakukan sampa pada fase terakhr yatu n-1. proses penukaran n akan memperoleh data terurut dar kecl ke besar. Untuk melhat proses lebh detl dapat dgambarkan pada penelasan berkut: Data = 10,9,6,8,2,3,1,7 Tabel 1. Fase pengurutan data dengan metode buble short Fase Data Perbandngan Data Hasl 1 10,9,6,8,2,3,1,7 Ke-1 (10) dengan ke-2 (9) 9,10,6,8,2,3,1,7 Ke-1 (9) dengan ke-3 (6) 6,10,9,8,2,3,1,7 Ke-1 (6) dengan ke-4 (8) 6,10,9,8,2,3,1,7 Ke-1 (6) dengan ke-5 (2) 2,10,9,8,6,3,1,7 Ke-1 (2) dengan ke-6 (3) 2,10,9,8,6,3,1,7 Ke-1 (2) dengan ke-7 (1) 1,10,9,8,6,3,2,7 Ke-1 (1) dengan ke-8 (7) 1,10,9,8,6,3,2,7 2 1,10,9,8,6,3,2,7 Ke-2 (10) dengan ke-3 (9) 1,9,10,8,6,3,2,7 Ke-2 (9) dengan ke-4 (8) 1,8,10,9,6,3,2,7 Ke-2 (8) dengan ke-5 (6) 1,6,10,9,8,3,2,7 Ke-2 (6) dengan ke-6 (3) 1,3,10,9,8,6,2,7 Ke-2 (3) dengan ke-7 (2) 1,2,10,9,8,6,3,7 Ke-2 (2) dengan ke-8 (7) 1,2,10,9,8,6,3,7 3 1,2,10,9,8,6,3,7 Ke-3 (10) dengan ke-4 (9) 1,2,9,10,8,6,3,7 Ke-3 (9) dengan ke-5 (8) 1,2,8,10,9,6,3,7 Ke-3 (8) dengan ke-6 (6) 1,2,6,10,9,8,3,7 Ke-3 (6) dengan ke-7 (3) 1,2,3,10,9,8,6,7 Ke-3 (3) dengan ke-8 (7) 1,2,3,10,9,8,6,7 4 1,2,3,10,9,8,6,7 Ke-4 (10) dengan ke-5 (9) 1,2,3,9,10,8,6,7 Ke-4 (9) dengan ke-6 (8) 1,2,3,8,10,9,6,7 Ke-4 (8) dengan ke-7 (6) 1,2,3,6,10,9,8,7 Ke-4 (6) dengan ke-8 (7) 1,2,3,6,10,9,8,7 5 1,2,3,6,10,9,8,7 Ke-5 (10) dengan ke-6 (9) 1,2,3,6,9,10,8,7 Ke-5 (9) dengan ke-7 (8) 1,2,3,6,8,10,9,7 Ke-5 (8) dengan ke-8 (7) 1,2,3,6,7,10,9,8 3
Fase Data Perbandngan Data Hasl 6 1,2,3,6,7,10,9,8 Ke-6 (10) dengan ke-7 (9) 1,2,3,6,7,9,10,8 Ke-6 (9) dengan ke-8 (8) 1,2,3,6,7,8,10,9 7 1,2,3,6,7,8,10,9 Ke-7 (10) dengan ke 8 (9) 1,2,3,6,7,8,9,10 Penelasan datas secara detl telah menggambarkan bagamana langkah-langkah pengurutan data dengan metode gelembung (buble sort). Berkut n adalah algortma dan contoh program dar kasus pengurutan data dengan metode gelembung. Algortma urut_buble. Deklaras nt Data[ ] nt tampung, I,; Deskrps ula for 0 to n-1 do for +1 to n do If Data[] > Data[] then tampung Data[] Data[] Data[] Data[] tampung Akhr f Akhr for Akhr for Selesa Program Pengurutan dengan buble short #nclude <cono.h> #nclude <stdo.h> man() nt Data[10]; nt tampung,,; for (=0;<10;++) prntf("inputkan Data angka:");scanf("%d",&data[]); /*mula pengurutan dengan metode buble sort*/ for (=0;<10;++) for (=+1;<=10;++) f (Data[]>Data[])//ka Data ke > data ke, proses tukar data tampung=data[]; // data ke dsmpan dlm varabel tampung Data[]=Data[]; // skrg data ke ds dg s dg data ke 4
Data[]=tampung; // skrg data ke ds dg data ke yg dsmpan sementara dlm varabel tampung /*menamplkan Data yang sudah terurut*/ prntf("data Terurut adalah:"); for (=0;<10;++) prntf("\n%d",data[]); getch(); Hasl output program: 2. Metode Penyspan (Inserton Sort) Metode penyspan adalah metode pengurutan data dengan cara menyspkan data agar menad urut. Jka terdapat sebuah lark data yan akan durutkan ( A1 An), dengan menggunakan metode penyspan n data akan dsusun pada kelompok yang terurut yatu dar A1 sampa dengan A-1 dengan dmula dar 2 dengan pertambahan 1. Penempatan pada kelompok terurut nlah yang menggunakan metode penyspan. Untuk memberkan lustras yang lebh detl dar metode penyspan n dberkan data sebaga berkut: ndeks Elemen array A 4 3 5 3 2 5
Langkah- langkah urut untuk menyelesakan pengurutan data datas adalah: a. Dmula dar data pada ndeks ke-1 (ndeks data kedua) dan ndeks =. ndeks 4 3 5 3 2 Lakukan perulangan ka: Konds > 0 AND A[] < A[-1] terpenuh. Karena konds terpenu maka lakukan pertukaran data A[] dan A[-1] 3 4 5 3 2 Lakukan decrement yatu = -1. 3 4 5 3 2 Setelah decrement = 0.karena perulangan syaratnya > 0 maka perulangan berhent dsn. b. Indeks bertambah sehngga menad = 2, maka =, atau = 2 3 4 5 3 2 Lakukan perulangan ka : 6
konds > 0 AND A[] < A[-1] terpenuh. Karena konds tdak terpenuh maka pertukaran data tdak terad. Tdak ada pula decrement c. Indeks bertambah sehngga menad = 3, maka =, atau = 3 3 4 5 3 2 Lakukan perulangan ka : konds > 0 AND A[] < A[-1] terpenuh?. Karena konds terpenuh maka pertukaran data terad yatu antara data A[] dg A[ -1] atau A[3] dg A[2] 3 4 3 5 2 decrement, = -1 maka =3-1 = 2 [0] [1] [2] [3] [3] 3 4 3 5 2 konds > 0 AND A[] < A[-1] terpenuh?. Karena konds terpenuh maka pertukaran data terad yatu antara data A[] dg A[ -1] atau A[2] dg A[1] 3 3 4 5 2 decrement, = -1 maka =2-1 = 1 7
3 3 4 5 2 konds > 0 AND A[] < A[-1] terpenuh?. Karena konds tdak terpenuh maka pertukaran data tdak terad. d. Indeks bertambah sehngga menad = 4, maka =, atau = 4 3 3 4 5 2 Lakukan perulangan ka : konds > 0 AND A[] < A[-1] terpenuh?. Karena konds terpenuh maka pertukaran data terad yatu antara data A[] dg A[ -1] atau A[4] dg A[3] 3 3 4 2 5 decrement, = -1 maka =4-1 = 3 3 3 4 2 5 konds > 0 AND A[] < A[-1] terpenuh?. Karena konds terpenuh maka pertukaran data terad yatu antara data A[] dg A[ -1] atau A[3] dg A[2] 8
3 3 2 4 5 decrement, = -1 maka =3-1 = 2 3 3 2 4 5 konds > 0 AND A[] < A[-1] terpenuh?. Karena konds terpenuh maka pertukaran data terad yatu antara A[ ] dg A[ -1] atau A[ 2 ] dg A[ 1] 3 2 3 4 5 decrement, = -1 maka =2-1 = 1 3 2 3 4 5 konds > 0 AND A[] < A[-1] terpenuh?. Karena konds terpenuh maka pertukaran data terad yatu antara A[ ] dg A[ -1] atau A[ 1 ] dg A[ 0] 2 3 3 4 5 9
decrement, = -1 maka =1-1 = 0 2 3 3 4 5 konds > 0 AND A[] < A[-1] terpenuh?. Karena konds tdak terpenuh maka pertukaran data tdak terad. Perulangan berakhr. e. Indeks bertambah sehngga menad = 5, maka =, atau = 5. 2 3 3 4 5 Karena ndeks elemen hanya sampa =4 maka loop berakhr. Algortma Inserton Sort dalam bentuk pseudecode adalah : Deklaras: nt, ; nt tampung; nt A[ ]=4,3,5,3,2; Deskrps: Mula For =0 to = n -1 do J= Whle ( >0 && A[]< A[-1]), lakukan pertukaran data A[] dan A[ -1] tampung A[]; A[ ] A[ -1]; A [ -1] tampung; --; end whle end for selesa 10
Program. Pengurutan data dengan metode nserton short #nclude <cono.h> #nclude <stdo.h> man( ) nt A[5]; nt tampung,,; for (=0;<5;++) prntf("masukkan nla A:");scanf(" %d",&a[]); for (nt = 0; < 5; ++) = ; whle ( >0 && A[]< A[-1]) tampung= A[]; A[] = A[-1]; A[-1] = tampung; --; prntf("\ndata terurut:"); for( =0;<5;++) prntf(" %d",a[]); getch(); Output dar Program: 11