Selasa, 30 Juni 2009

BUBBLE SORT



–Metode sorting paling mudah, namun paling lambat dibandingkan dengan yang lain.

–Bubble sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya.

–Bisa dilakukan baik dari awal array maupun akhir array.

–Proses yang berlangsung, jika:
# Ascending: jika elemen sekarang lebih besar daripada elemen berikutnya, maka kedua elemen tersebut ditukar.
# Descending: jika elemen sekarang lebih kecil daripada elemen berikutnya, maka kedua elemen tersebut ditukar.

–Proses penukaran ini akan terus dilakukan hingga seluruh array telah diperiksa.
–Contoh fungsi bubble sort:

//Bubble Sort
void bubble (int a[], int n) {
int i,j;
for (i=n;i>=1;i–)
{
for (j=2;j
{
if(a[j-1]>a[j])
tukar (a,j-1,j);
}
}
}

Contoh untuk mengurutkan data 34,43,65,90

Pada iterasi i=0:j=13: tukar 56-37 menjadi 34,43,65,90

j=12: tidak ada penukaran 34,43,65,23,90 j= 3: tukar 65-23 menjadi 34,43,23,65,90

j= 2: tukar 43-23 menjadi 34,23,43,65,90j= 1: tukar 34-23 menjadi 23,34,43,65,90

Jika Bobble Sort dalam setiap iterasi melakukan loop-for penukaran ke satu arah, Shaker Sort (suatu variant dari Bubble Sort) melakukan loop-for penukaran dengan arah bolak-balik dengan batas loop-for kiri dan kanan semakin menyempit.


EXCHANGE SORT




sangat mirip dengan bubble sort, perbedaannya hanya dalam hal bagaimana membandingkan antar elemennya

exchange sort membandingkan suatu elemen dengan elemen lainnya dalam array tsb, dan melakukan pertukaran elemen jika perlu, jadi ada elemen yang selalu menjadi elemen pusat ( pivot )

contoh program :

void exchange_sort ( int data [ ] )

{

for ( int i=0 ; i

{

for ( int j=i+1 ; j

{

if ( data[ i ] < style="">

}

}



SELECTION SORT


:: Kombinasi sorting dan searching.


:: Metode sorting ini menggunakan ide menemukan data dengan nilai terbesar dalam array lalumemindahkannya ke bagian akhir array ( jika array harus dalam urutan dari kecil ke besar ). Jikaterbesar sudah berada di posisi yang benar, kita bisa menerapkan hal yang sama untuk data yang tersisa lainnya. Yaitu, menemukan data terbesar berikutnya dan memindahkan ke bagian akhir
:: Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses. data

:: Contoh fungsi selection sort :


void selection_sort( )

{

int pos,i,j;

for( i=0; i

{

pos = i;

for( j=i+1; j

{

if( data[ j ] < pos =" j">

}

if(pos!=i) tukar(pos,i) ;



INSERTION SORT



:: Metode sorting ini bisa diterapkan dalam menjaga array dalam urutan tertentu. Misalkan kita memiliki array yang telah tersortir dan kita ingin memasukkan sebuah data ke dalam array. Jika kita ingin memastikan bahwa array yang telah berubah tersebut masih tetap dalam urutan tertentu, maka data baru harus dimasukkan dalam posisi tertentu yang tepat, misalnya semua data yang memiliki nilai lebih kecil berada sebelumnya dan data yang lebih besar berada di posisi sesudahnya. Ini berarti memindahkan setiap data yang lebih besar satu elemen ke kanan, sehingga terbentuk sebuah ruang kosong untuk elemen baru ini

:: Misal ascending : pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan dimasukkan di posisi yang seharusnya.
:: Pada penyisipan elemen, maka elemen-elemen lain akan bergeser ke belakang.
:: Contoh program insertion sort :

void insertion_sort( )

{

int temp, i, j;

for(i=1;i

{

temp = data[ i ] ;

j =i-1;

while( data[ j ] > temp && j>=0 )

{

data[ j+1] = data[ j ] ;

j--;

}

data[ j+1] = temp ;

}



QUICK SORT



:: Merupakan metode sorting yang paling cepat ( saat ini tercepat ).


:: Quick sort adalah sebuah algoritma rekursif


:: Algoritma Quicksort didasarkan pada sebuah ide yang sederhana : Diberikan sebuah

array, pilih data manapun dari array. Data yang dipilih tersebut selanjutnya kita sebut

pivot. ( Dalam praktek kali ini, kita akan gunakan data pertama dari array ) Pindah semua data yang lebih kecil dari pivot ke bagian awal list, dan pindahkan semua data yang lebih besar dari pivot ke akhir dari list. Sekarang, taruh pivot diantara dua kumpulan data tadi. Posisi pivot tersebutsudah tidak akan dipindah-pindah lagi. Kita sebut prosedur tersebut QuicksortStep


:: QuicksortStep tidak rekursif, ia hanya digunakan sebagai subroutine oleh Quicksort.

Dengan subroutine QuicksortStep ini, Quicksort menjadi mudah. Algoritma Quicksort

70 untuk melakukan sorting pada sebuah array menerapkan QuicksortStep pada array,

kemudian menerapkan Quicksort secara rekursif pada data yang berada di sebelah kiri

dan sebelah kanan pivot


:: contoh program :


void QuickSort ( int L,int R )

{

int I , j ;

int mid ;

i = L ;

j = R ;

mid = data[ (L+R) / 2] ;

do

{

while( data[ I ] <>

while( data[ j ] > mid ) j--;

if( i <=j )

{

tukar( i,j );

i++;

j--;

}

}

while( i

if( L <>

if( i > R ) QuickSort( i,R );

}

0 komentar:

Posting Komentar

Template Design by SkinCorner