Senin, 18 April 2011

Sorting Array


ARRAY

Array merupakan suatu group yang terdiri dari elemen – elemen (variabel) yang memiliki data sama. Kumpulan variabel ini kemudian diperlakukan sebagai kesatuan entitas, sehingga kita dapat mengakses masing – masing anggotanya dengan cara mengindeksnya.

Pengertian
suatu kesatuan entitas yang beranggotakan elemen – elemen / variable yang memiliki tipe data yang sama dan dapat diakses dengan memanggil nama array beserta indeks elemennya.
Selain itu array juga dapat berupa array satu dimensi, dua dimensi, tiga dimensi ataupun banyak dimensi. Namun, kali ini hanya akan membahas array 1 dimensi saja, karena keterkaitannya dengan proses sorting yang akan dilakukan menggunakan array sebagai parameternya.

Mendeklarasikan Array
Variable array dapat dideklarasikan dengan cara :
                       
Tipedata nama_variable[banyaknya_elemen]

Contoh :
int a[15];



SORT

Sort adalah proses pengurutan data yang tadinya tersusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu.

Pada umunya terdapat 2 macam jenis pengurutan, yaitu :

-          ascending (naik)
-          descending (turun)

Selian jenis pengurutan di atas, pada bagian kali ini kita juga akan membahas mengenai metode – metode yang dapat digunakan untuk  melakukan sorting. Metode – metode yang digunakan adalah :

-          Bubble sort
-          Selection sort
-          Insertion sort

Hal yang umum dilakuakan di dalam sorting adalah terjadinya suatu pertukaran data antara 2 elemen atau lebih. Maka untuk melakukan pertukaran data tersebut, kita harus terlebih dahulu membuat variable temp(sementara). Tujuaan pembuatan variable ini ditujukkan untuk menampung nilai dari salah satu elemen yang akan ditukar sebelum kedua nilai tersebut mengalami proses pertukaran.


Contoh fungsi untuk melakukan pertukaran 2 data :
//fungsi tukar data
void tukardata(int i[100],int b, int c)
{
       //membuat variable temprorary
       int temp;
       //menukarkan data
       temp = i[b];
       i[b] = i[c];
       i[c] = temp;
}



Buble sort

Pengurutan dengan menggunakan metode bubble sort akan membandingkan elemen sekarang dengan elemen berikutnya. Jika elemen sekarang lebih besar daripada elemen berikutnya maka elemen terseut ditukar. Jika anda perhatikan, maka setiap langkah dari algoritma ini akan menggeser satu persatu elemen dari kanan ke kiri. Jika barisan bilangan tidak disusun secara horisontal melainkan vertikal, akan terlihat seperti gelembung – gelembung bubble yang naik dari dasar akuarium. Oleh karena itu algoritma ini disebut dengan Bubble Sort.

Tahapan yang dilakukan di dalam Bubble Sort adalah sebagai berikut :

  1. Pengecekkan dapat dilakukan dari data yang paling awal maupun dari data yang paling akhir. Jika pengecekkan dimulai dari data yang paling awal, maka data yang paling awal tersebut kemudian akan dilakukan pengecekkan dengan data yang ada sesudahnya. Jika ternyata data yang ada di awal tersebut lebih kecil, maka data tersebut akan ditukar. Maka proses pengecekkan tersebut dilakukan sampai dengan data yang paling akhir.
  2. Kemudian langkah selanjutanya pengecekkan dilakukan kembali pada data yang paling awakl dan kembali dibandingkan dengan data yang ada sesudahnya. Jika data yang di awal tersebut ternyata lebih kecil, maka data tersebut akan ditukar dan proses pengecekkan dilakukan, namun tidak sampai data yang paling akhir. Karena data yang paling akhir merupakan data yang paling kecil. Langkah ini akan diulang terus menerus sesuai dengan jumlah data yang dimasukkan oleh user.



















 Di bawah ini adalah contoh fungsi dari bubble sort :

//fungsi mengurutkan data menngunakan bubble sort
void urutdata(int i[100],int bil)
{
       //dilakukan perulangan sebanyak jumlah bilangan
       for(int a=0; a<bil; a++)
       {
              //dilakukan perulangan sebanyak (jml bilangan - 1)
              for (int b=0; b<bil-1; b++)
              {
                     //pengecekkan apabila bilangan pertama lb kecil daripada
                     //bilangan kedua, maka dilakukan penukaran
                     if (i[b] < i[b+1])
                     {
                           //memanggil fungsi tukardata
                           tukardata(i,b,b+1);
                     }
              }
       }
       tampil(i,bil); }

Selection Sort

Proses yang dilakukan oleh algoritma selection sort adalah dengan mencari dari elemen berikutnya yang terus dilanjutkan sampai elemen yang terakhir. Jika diketemukan elemen yang lebih kecil maka elemen yang bersangkutan akan ditukar, dan demikian seterusnya. Karena proses ini selalu dilakukan pemilihan suatu elemen (select) pada setiap langkahnya, maka algoritma ini disebut dengan Selection Sort.

void selection(int i[100], int bil)
{
       int j, pos;
       for (int b = 0; b <bil-1; b++)
       {
              pos = b;
              for (j = b+1; j<bil; j++)
              {
                     if (i[j] > i[pos])
                           pos = j;
              }
              if (b != pos)
              {
                     tukardata(i,b,pos);
              }
       }
       tampil(i,bil);
}




Insertion Sort

Proses yang dilakukan dalam algoritma insertion sort adalah membandingkan data yang berada di posisi i (data urutan kedua pada saat dimasukkan) dengan data sebelumnya. Jika data tersebut lebih besar dibandingkan dengan data sebelumnya maka data tersebut akan disisipkan pada urutan sebelumnya sesuai dengan urutan yang sesuai.
Proses pengurutan dengan algoritma ini seolah – olah mengambil elemen dari tempat tertentu dan kemudian menyisipkannya pada tempat yang ada sebelumnya sehingga data elemen – elemen lainnya bergeser ke belakang. Sehingga algoritma ini disebut dengan Insertion Sort.
//fungsi insertion sort
void insertion_sort(int i[100], int bil)
{
       int tampung;
       int banding;
      
       for (int a=1; a < bil; a++)
       {
              tampung = i[a];
              banding = a-1;
              while ((i[banding] < tampung) && (banding >= 0))
              {
                     //dilakukan proses penukaran
                     i[banding+1] = i[banding];
                     banding --;
              };
              i[banding+1] = tampung;
       }
       tampil(i,bil);
}




Latihan Soal

  1. Gabungkan fungsi – fungsi sort diatas sehingga menjadi sebuah program yang mampu memilih sendiri metode mana yang akan digunakan untuk mengurutkan data. Tampilkan program yang sudah urut tersebut baik secara ascending maupun descending.
  2. Jika pada soal diatas jenis inputan adalah numeric. Maka buatlah suatu program yang memberikan inputan berupa char, kemudian diurutkan sesuai dengan urutan abjad alphabet.

Tidak ada komentar:

Posting Komentar