Tuesday, November 2, 2010

Algortima Sorting

Sorting adalah sebuah proses pengurutan data berdasarkan key tertentu.
Kegunaan dari sorting adalah untuk mempermudah proses pencarian.
Sorting dalam c++ bisa dilakukan dengan 3 cara :
  1. One Way Buble sort yang artinya sort seperti gelembung udara ringan yang selalu diatas.
  2. Selection sort yakni sort data secara bar-bar karena membandingkan nilai dalam setiap index.
  3. Insertion sort yang katanya mengurutkan data seperti main kartu. (main judi kali hahaha)
  4. Two Way Buble sort sama kaya buble sort cuma lebih mantap.
 Untuk contoh programnya adalah sebagai berikut :
Jangan lupa untuk membuat function tukar atau swap.

void swap(int i, int j)
{
       int apa;
       apa = i;
       i = j;
       j = apa;
}
ket = swap ini bisa diganti2 kodingnya sesuai dengan kebutuhan. (maksudnya kalau ngelempar pake pointer tinggal tambahin deh pake pointer hoho).

contoh koding buble sort :
void bublesort(int arr[], int n)//yang dilempar tuh array sama jumlah datanya
int i, j;
for (i = 1; i < n;i++)
{
    for(j = n-1; j>=i; j--)
    {
        if (arr[j-1] > arr[j]) swap ( &arr[j], &arr[j-1]);
    }
}


contoh koding selection sort :
void selectionsort(int arr[], int n)
{
    int i, j, temp;
    for(i = 0; i < n-1; i++)
    {
        temp = i;
        for(j = i+1; j < n; j++)
        {
            if (arr[j] < arr[temp]) temp = j;
        }
        if (temp!= i) swap (&arr[temp], &arr[i]);
    }

contoh koding insertion :
void insertionsort(int arr[], int n)
{
    int i, j, temp;
    for(i = 0; i < n-1; i++)
    {
        temp = arr[i];
        j = i-1;
        while(j>=0 && temp=arr[j])
        {
            arr[j+1] = arr[j];
            j = j-1;
        }
        arr[j+1]=temp;
    }
}

contoh koding twoway bublesort:
void twowaybubblesort(int arr[], int n)
{
    int j = 0;
   
    int a = 0;
    int b = n - 1;
   
    while (b > a)
    {
        printf("interation ke-%d\n", j++);
       
       
        for(int i = b; i > a; i--)
        {
            if (arr[i-1] > arr[i])
                swap(&arr[i], &arr[i-1]);
        }
       
        a++;
       
        for(int i = a; i < b; i++)
        {
            if (arr[i] > arr[i+1])
                swap(&arr[i], &arr[i+1]);
        }
       
        b--;
    }
}

lumayan membantu kan??haha

0 comments: