Loading
Selamat Datang di Waroeng PakDe College Blog's

Sekapur Sirih

Mohon beri Masukan, Saran, dan Kritikan mengenai isi kontens posting Blogspot ini, dan kalau diperlukan diharapkan kerjasama Anda dalam mengisi kontens posting Blogspot ini.
Terima kasih atas perhatian dan kerjasamanya
Admin - waroengpakde

Selasa, Desember 16, 2008

Metode-metode pengurutan data


Mata kuliah Struktur Data merupakan salah satu mata kuliah yang ajarkan pada banyak program studi ilmu komputer. Mata kuliah ini mempelajari struktur data dan algoritma diantaranya array, linked list, stack, queue, table hash, heap, metode pengurutan, metode pencarian, binary tree dan banyak lagi. Salah satu cara termudah memahami materi matakuliah ini adalah dengan cara memvisualisasikan materinya secara langsung, misalnya algoritma pengurutan. Tanpa visualisasi, algoritma pengurutan yang dipelajari harus dibayangkan oleh masing-masing orang.
Pengurutan data dalam struktur data sangat penting untuk data yang beripe data numerik ataupun karakter. Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun)
Berikut metode pengurutan data :


  • Bubble sort
  • Shell sort
  • Insertion sort
  • Quick sort
  • Radix sort
    Bubble Sort
    • Diberi nama "Bubble" karena proses pengurutan secara berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda.

    • Bubble Sort mengurutkan data dengan cara
    membandingkan elemen sekarang dengan elemen berikutnya. Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.

    Perhatikan bahwa jumlah pertukaran dan perbandingan data tidaklah tetap, perbedaan tergantung pada keadaan awal data setelah diacak. Tabel berikut memperlihatkan tabulasi hasil visualisasi menggunakan metode bubble sort.
    Pengacakan
    Jumlah Total
    Pertukaran Data
    Perbandingan Data
    1
    155
    279
    2
    127
    272
    3
    137
    245
    4
    142
    297
    5
    151
    294
    6
    138
    285
    7
    178
    300
    8
    165
    272
    9
    156
    285
    10
    175
    300
    Rata-rata
    152
    283
    Jumlah rata-rata pertukaran untuk 10 kali pengacakan adalah 152 kali, sedangkan rata-rata jumlah perbandingan adalah sebanyak 283 kali. Tetapi bila data pada awalnya terurut, maka untuk 25 jumlah data, jumlah pertukaran data sebanyak 0 kali dengan jumlah perbandingan sebanyak 24 kali.
    Shell Sort
    • Dikembangkan oleh Donald L. Shell (1959)
    • Mengurutkan data dengan cara membandingkan suatu data dengan data lain yang memiliki jarak tertentu sehingga dibentuk sub-list, kemudian dilakukanZ pertukaran jika diperlukan
    Jumlah pertukaran data dengan metode ini tidak selalu tetap namun tergantung pada keadaan awal data. Sedangkan jumlah perbandingan data selalu tetap. Tabel berikut memperlihatkan tabulasi hasil visualisasi menggunakan metode selection sort.
    Pengacakan
    Jumlah Total
    Pertukaran Data
    Perbandingan Data
    1
    23
    325
    2
    24
    325
    3
    21
    325
    4
    22
    325
    5
    23
    325
    6
    22
    325
    7
    21
    325
    8
    20
    325
    9
    23
    325
    10
    22
    325
    Rata-rata
    22
    325
    Terlihat bahwa jumlah pertukaran data turun drastis dibandingkan pengurutan menggunakan metode bubble sort, karena memang metode selection sort diciptakan untuk memperbaiki metode bubble sort mengurangi jumlah perbandingan [4]. Jumlah perbandingan data selalu tetap dan tidak tergantung pada keadaan awal data. Bila data awal dalam keadaan sudah terurut, maka untuk jumlah data yang sama, total pertukaran data sebanyak 0 kali dengan jumlah perbandingan tetap 325 kali.
    Metode Insertion Sort
    Hasil pengamatan menunjukkan bahwa dengan jumlah data dan jumlah pengacakan yang sama, metode insertion sort bekerja lebih cepat dibandingkan dengan metode bubble sort dan selection sort (untuk mencatat waktu secara lebih tepat, mungkin program perlu dimodifikasi sehingga waktu proses pengurutan dapat dihitung secara tepat). Jumlah pertukaran data dengan metode ini juga tergantung pada keadaan awal data yaitu rata-rata sebanyak 136 kali (dari 10 kali pengamatan), dan jumlah perbandingan data selalu 300 kali. Berikut tabulasi hasil visualisasi menggunakan metode insertion sort.
    Pengacakan
    Jumlah Total
    Pertukaran Data
    Perbandingan Data
    1
    149
    300
    2
    138
    300
    3
    168
    300
    4
    157
    300
    5
    102
    300
    6
    106
    300
    7
    122
    300
    8
    123
    300
    9
    145
    300
    10
    148
    300
    Rata-rata
    136
    300
    Berikut contohnya
    #include <conio.h>
    #include <stdio.h>
    #include <iostream.h>
    void main ()
    {
    char nama[20];
    char jurusan [20];
    cout<<"masukkan nama anda: ";cin.getline(nama,20);
    cout<<"masukkan jurusan anda: ";cin.getline(jurusan,20);
    cout<<"nama anda: "<<nama<<endl;
    cout<<"jurusan anda: "<<jurusan;
    getch();
    }

Visualisasi Metode Pengurutan

Mata kuliah Struktur Data merupakan salah satu mata kuliah yang ajarkan pada banyak program studi ilmu komputer. Mata kuliah ini mempelajari struktur data dan algoritma diantaranya array, linked list, stack, queue, table hash, heap, metode pengurutan, metode pencarian, binary tree dan banyak lagi.


Salah satu cara termudah memahami materi mata kuliah ini adalah dengan cara memvisualisasikan materinya secara langsung, misalnya algoritma pengurutan. Tanpa visualisasi, algoritma pengurutan yang dipelajari harus dibayangkan oleh masing-masing orang. Hal ini tentunya tidaklah mudah, paling tidak didukung oleh beberapa alasan berikut: pertama, seringnya terjadi pertukaran data dari suatu posisi ke posisi lain selama proses pengurutan berlangsung. Kedua, sulitnya membayangkan dan mengingat posisi data yang berpindah dan data yang tidak berpindah. Ketiga, pertukaran dan perpindahan data tergantung kepada metode pengurutuan yang digunakan.


Tulisan ini membahas program visualisasi metode pengurutan dasar: bubble sort, selection sort dan insertion sort. Tujuannya adalah memperlihatkan perubahan posisi data dan menghitung secara tepat jumlah perbandingan dan pertukaran data selama proses pengurutan berlangsung. Implementasi program visualisasi ini menggunakan bahasa pemrograman Java. Program ini merupakan aplikasi applet yang terdiri dari 6 class meliputi: SortItem, Control, SortAlgoritm, BubbleSortAlgorithm, SelectionSortAlgorithm dan InsertionSortAlgorithm. Khusus class SortItem dan SortAlgorithm dikembangkan dan dimodifikasi dari program aslinya yang ditulis oleh James Gosling dari Sun Microsystems pada tahun 1997.

 
Metode Pengurutan

Secara umum, metode pengurutan dapat dikelompokkan dalam 2 kategori yaitu metode pengurutan sederhana (elementary sorting methods) dan metode pengurutan lanjut (advanced sorting methods). Metode pengurutan sederhana meliputi bubble sort, selection sort dan insertion sort. Sedangkan metode pengurutan lanjut diantaranya shell sort, quick sort, merge sort dan radix sort. Metode bubble sort merupakan metode pengurutan yang menggunakan konsep gelembung. Perbandingan data dilakukan dari posisi pertama atau posisi terakhir bergeser satu persatu sampai semua data dibandingkan [3], [4]. Metode selection sort merupakan perbaikan dari metode bubble sort dengan mengurangi jumlah perbandingan [4]. Selection sort merupakan metode pengurutan yang mencari nilai data terbesar atau terkecil dan kemudian menempatkannya pada posisi yang sebenarnya, dimulai dari data diposisi 0 hingga data diposisi N-1. Sedangkan metode insertion sort adalah metode pengurutan yang biasa dipakai oleh pemain kartu dalam mengurutkan kartunya, yaitu menyisipkan kartu dengan nilai yang lebih kecil ke posisi sebelum kartu pembandingnya.


Gambar 1. Hirarki class program visualisasi.

Class SortItem menurunkan sifat class applet yang memiliki tombol-tombol pengatur visualisasi yang diimplementasi di class Controls. SortItem memiliki algoritma pengurutan (SortAlgorithm) yang merupakan abstract class yang kemudian diturunkan sifatnya oleh class BubbleSortAlgorithm, SelectionSortAlgorithm, dan InsertionSortAlgorithm.

 
 

 
 

Metode Pengacakan (Scramble)

 
 

Dalam visualisasi ini, data direpresentasikan dalam bentuk diagram batang sebanyak 25 buah. Tinggi dan posisi diagram batang diperoleh secara acak menggunakan metode scramble yang ditulis dalam kelas SortItem sebagai
berikut:

 
 

                   private void scramble(){

 
 

                      int item[] = new int[25];

        double f = width / (double) item.length;

        for (int i = item.length; --i >= 0;){

            item[i] = (int)(i * f) + 10;

        }

        int seed = item.length-1;

        for (int i = item.length; --i >= 0;){

            int j = (int)(seed * Math.random());

            int temp = item[i];

            item[i] = item[j];

            item[j] = temp;

        }

        arr = item;

                 }

 
 

Nilai dari variabel f merupakan lebar dari diagram batang. Perulangan for…loop yang pertama memberikan nilai kepada array item, tetapi belum teracak. Sedangkan pada perulangan for…loop yang kedua, nilai j diacak dan kemudian data diposisi i ditukar dengan data diposisi j. Gambar 2. berikut memperlihatkan tampilan data setelah diacak dan setelah terurut yang dijalankan menggunakan appletviewer command, dan gambar 3 bila program dijalankan melalui browser.

 

Gambar 2. Tampilan setelah diacak dan setelah terurut.

 

Gambar 3. Program dijalankan melalui browser.

 
 

Teknik Penggambaran

Teknik penggambaran merupakan kunci utama dalam program visualisasi ini. Teknik penggambaran yang tidak benar mengakibatkan visualisasi menjadi tidak halus. Sebagai contoh, bila terdapat 3 buah data yang digambarkan dalam bentuk diagram batang masing-masing bernilai 10, 15, dan 5, yang kemudian selama proses pengurutan mengalami pertukaran menjadi 10, 5, dan 15, maka cara penggambaran perubahan tersebut dapat diilustrasikan sebagai berikut:


Gambar 3. Teknik penggambaran perubahan data dalam program visualisasi.

Dari ilustrasi di atas dapat dilihat bahwa penggambaran dilakukan dalam 2 tahap. Tahap pertama adalah menggambar diagram batang dengan lebar wbar setinggi height – nilai data. Sebagai contoh, bila nilai data = 5, maka 20 – 5 = 15. Warna dari diagram batang ini adalah sama dengan warna latar belakang. Penggambaran dimulai dari koordinat y = 0 dengan dx merupakan koordinat x dari diagram batang yang berubah sesuai urutan dari diagram batang. Sintaksnya dalam Java adalah:

g.fillRect(dx, 0, wbar, height-arr[i]);

Tahap kedua adalah menggambar diagram batang warna hitam dengan lebar wbar setinggi nilai data dengan koordinat y = height – nilai data. Sebagai contoh, bila nilai data = 5, maka y = 15. Sintaknya dalam Java adalah:

g.fillRect(dx, height-arr[i], wbar, arr[i]);

Berikut kode lengkap dari metode paint untuk menggambarkan perubahan data.

        public void paint(Graphics g){

            int item[] = arr;

            int nbar = 25;

            int wbar = (int)(width / nbar);

            int dx = width - wbar;

            g.setColor(getBackground());

            for (int i = item.length; --i >= 0; dx -= wbar){

                g.fillRect(dx, 0, wbar, height-arr[i]);

            }

            dx = width - wbar;

            g.setColor(Color.darkGray);

            for (int i = item.length; --i >= 0; dx -= wbar){

                g.fillRect(dx, height-arr[i], wbar, arr[i]);

            }

            if (h1 >= 0){

                g.setColor(Color.red);

                dx = h1 * wbar;

                g.drawLine(dx, 0, dx, height-1);

            }

            if (h2 >= 0){

                g.setColor(Color.blue);

                dx = h2 * wbar;

                g.drawLine(dx, 0, dx, height-1);

            }

        }

 
Hasil Pengamatan

Metode Bubble Sort

Perhatikan bahwa jumlah pertukaran dan perbandingan data tidaklah tetap, perbedaan tergantung pada keadaan awal data setelah diacak. Tabel berikut memperlihatkan tabulasi hasil visualisasi menggunakan metode bubble sort.

 Pengacakan

 Jumlah Total

Pertukaran Data 

Perbandingan Data 

 1

 155

279 

 2

 127

 272

 3

 137

 245

 4

 142

 297

 5

 151

 294

 6

 138

 285

 7

 178

 300

 8

 165

 272

 9

 156

 285

 10

 175

 300

 Rata-rata

 152

 283

Jumlah rata-rata pertukaran untuk 10 kali pengacakan adalah 152 kali, sedangkan rata-rata jumlah perbandingan adalah sebanyak 283 kali. Tetapi bila data pada awalnya terurut, maka untuk 25 jumlah data, jumlah pertukaran data sebanyak 0 kali dengan jumlah perbandingan sebanyak 24 kali.

 
Metode Selection Sort

Jumlah pertukaran data dengan metode ini tidak selalu tetap namun tergantung pada keadaan awal data. Sedangkan jumlah perbandingan data selalu tetap. Tabel berikut memperlihatkan tabulasi hasil visualisasi menggunakan metode selection sort.

 Pengacakan

 Jumlah Total

Pertukaran Data 

Perbandingan Data 

 1

 23

325

 2

 24

325

 3

 21

325

 4

 22

325

 5

 23

325

 6

22

325

 7

 21

325

 8

 20

325

 9

 23

325

 10

 22

325

 Rata-rata

 22

325

Terlihat bahwa jumlah pertukaran data turun drastis dibandingkan pengurutan menggunakan metode bubble sort, karena memang metode selection sort diciptakan untuk memperbaiki metode bubble sort mengurangi jumlah perbandingan [4]. Jumlah perbandingan data selalu tetap dan tidak tergantung pada keadaan awal data. Bila data awal dalam keadaan sudah terurut, maka untuk jumlah data yang sama, total pertukaran data sebanyak 0 kali dengan jumlah perbandingan tetap 325 kali.

 
Metode Insertion Sort

Hasil pengamatan menunjukkan bahwa dengan jumlah data dan jumlah pengacakan yang sama, metode insertion sort bekerja lebih cepat dibandingkan dengan metode bubble sort dan selection sort (untuk mencatat waktu secara lebih tepat, mungkin program perlu dimodifikasi sehingga waktu proses pengurutan dapat dihitung secara tepat). Jumlah pertukaran data dengan metode ini juga tergantung pada keadaan awal data yaitu rata-rata sebanyak 136 kali (dari 10 kali pengamatan), dan jumlah perbandingan data selalu 300 kali. Berikut tabulasi hasil visualisasi menggunakan metode insertion sort.

 Pengacakan

 Jumlah Total

Pertukaran Data 

Perbandingan Data 

 1

149

300

 2

138

300

 3

168

300

 4

157

300

 5

102

300

 6

106

300

 7

122

300

 8

123

300

 9

145

300

 10

148

300

 Rata-rata

136

300

 
Penutup

Hasil pengamatan menunjukkan bahwa dengan program visualisasi, proses pengurutan dapat diilustrasikan secara cepat, mudah dan berulang-ulang. Program visualisasi juga memperlihatkan secara jelas bagaimana proses pertukaran data terjadi, total perbandingan dan jumlah pertukaran data yang diperlukan. Selamat mencoba dan jangan lupa, kembangkan untuk hal-hal lain yang menarik.


Senin, Desember 08, 2008

PHP Tutorial-1

PHP is a powerful server-side scripting language for creating dynamic and interactive websites.

PHP is the widely-used, free, and efficient alternative to competitors such as Microsoft's ASP. PHP is perfectly suited for Web development and can be embedded directly into the HTML code.

The PHP syntax is very similar to Perl and C. PHP is often used together with Apache (web server) on various operating systems. It also supports ISAPI and can be used with

Introduction to PHP

PHP is a server-side scripting language.
--------------------------------------------------------------------------------
What You Should Already Know
Before you continue you should have a basic understanding of the following:

HTML
Some scripting knowledge
If you want to study these subjects first, find the tutorials on our Home page.
--------------------------------------------------------------------------------
What is PHP?
PHP stands for PHP: Hypertext Preprocessor
PHP is a server-side scripting language, like ASP
PHP scripts are executed on the server
PHP supports many databases (MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, etc.)
PHP is an open source software
PHP is free to download and use
What is a PHP File?
PHP files can contain text, HTML tags and scripts
PHP files are returned to the browser as plain HTML
PHP files have a file extension of ".php", ".php3", or ".phtml"
What is MySQL?
MySQL is a database server
MySQL is ideal for both small and large applications
MySQL supports standard SQL
MySQL compiles on a number of platforms
MySQL is free to download and use
PHP + MySQL
PHP combined with MySQL are cross-platform (you can develop in Windows and serve on a Unix platform)
Why PHP?
PHP runs on different platforms (Windows, Linux, Unix, etc.)
PHP is compatible with almost all servers used today (Apache, IIS, etc.)
PHP is FREE to download from the official PHP resource: www.php.net
PHP is easy to learn and runs efficiently on the server side
Where to Start?
To get access to a web server with PHP support, you can:

Install Apache (or IIS) on your own server, install PHP, and MySQL
Or find a web hosting plan with PHP and MySQL support

Jumat, Desember 05, 2008

PHP Tutorial-3

PHP Syntax

PHP code is executed on the server, and the plain HTML result is sent to the browser.
-----------------------------------------------------------------------------------------------------------------

Basic PHP Syntax
A PHP scripting block always starts with <?php and ends with ?>. A PHP scripting block can be placed anywhere in the document.

On servers with shorthand support enabled you can start a scripting block with <? and end with ?>.

For maximum compatibility, we recommend that you use the standard form (<?php) rather than the shorthand form.

<?php?>

A PHP file normally contains HTML tags, just like an HTML file, and some PHP scripting code.

Below, we have an example of a simple PHP script which sends the text "Hello World" to the browser:

/<html>
/<body><?php
/echo "Hello World";
/?></body>
/</html>

Each code line in PHP must end with a semicolon. The semicolon is a separator and is used to distinguish one set of instructions from another.

There are two basic statements to output text with PHP: echo and print. In the example above we have used the echo statement to output the text "Hello World".

Note: The file must have the .php extension. If the file has a .html extension, the PHP code will not be executed.
----------------------------------------------------------------------------------------------------------------------
Comments in PHP
In PHP, we use // to make a single-line comment or /* and */ to make a large comment block.

/<html>
/<body><?php//This is a comment/*
/This is
/a comment
/block
/*/?></body>
/</html>

PHP Tutorial-2

PHP Installation

What do You Need?
If your server supports PHP you don't need to do anything. Just create some .php files in your web directory, and the server will parse them for you. Because it is free, most web hosts offer PHP support.

However, if your server does not support PHP, you must install PHP.


Here is a link to a good tutorial from PHP.net on how to install PHP5: http://www.php.net/manual/en/install.php

Download PHP
Download PHP for free here: http://www.php.net/downloads.php

Download MySQL Database
Download MySQL for free here: http://www.mysql.com/downloads/index.html

Download Apache Server
Download Apache for free here: http://httpd.apache.org/download.cgi