Rabu, 29 Mei 2019

ALGORITMA DAN PEMROGRAMAN 2 Sorting (Buble dan Quick)

Sorting (Buble dan Quick)

A. Sorting

          Sorting dalam algoritma pemrograman merupakan proses pengurutan sekumpulan data dalam suatu urutan tertentu. Sorting dipakai untuk : 
  1. Membantu proses pencarian (searching)
  2. Menyelesaikan masalah - masalah kompleks seperti penjadwalan, pengolahan basis data, riset operasi, dan lain - lain.

B. Jenis - jenis Sorting

1.       Bubble Sort
Metode pengurutan dengan cara membandingkan data dan menukar data dengan tepat disebelahnya secara terus menerus sampai dipastikan data tidak ada lagi perubahan.

Contoh Program :

Algoritma
#include <iostream>
using namespace std;
main()
{
    int db, i, j, pp, buble;
    int blngn[5];
    string iml;

    cout << "Masukkan Jumlah Data Bilangan = "; cin >>db;
    for (i=0; i<db;i++)
    {
        cout << "Bilangan Ke- "<<i+1<<" = "; cin >>blngn[i];
    }
    lagi:
    cout << "Mengurutkan Data Bilangan : "<<endl;
    cout << "   1. Dengan Ascending"<<endl;
    cout << "   2. Mencari Descending"<<endl;
    cout << "Pilihan Pengurutan(1/2) : "; cin >>pp;
    if(pp==1)
    {
        for(i=0;i<=db-2;i++)
        {
            for(j=db-1;j>=i+1;j--)
            {
                if(blngn[j]<blngn[j-1])
                {
                    buble=blngn[j];
                    blngn[j]=blngn[j-1];
                    blngn[j-1]=buble;
                }
            }
        }
        cout << "Data telah diurutkan berdasarkan Ascending"<<endl;
        for(i=0; i<db; i++)
        {
            cout << "Data Ke - " <<i+1<< " : "<<blngn[i]<<endl;
        }
    }
    else if(pp==2)
    {
        for(i=0;i<=db-2;i++)
        {
            for(j=db-1;j>=i+1;j--)
            {
                if(blngn[j]>blngn[j-1])
                {
                    buble=blngn[j];
                    blngn[j]=blngn[j-1];
                    blngn[j-1]=buble;
                }
            }
        }
        cout << "Data telah diurutkan berdasarkan Descending"<<endl;
        for(i=0; i<db; i++)
        {
            cout << "Data Ke - " <<i+1<< " : "<<blngn[i]<<endl;
        }
    }
    cout << "Ingin Mengurutkan Lagi(Y/T) : "; cin >> iml;
    if(iml=="y"||iml=="Y")
    {
        goto lagi;
    }
    else
        cout << "Selesai"<<endl;
}

Hasil Running
2.      Quick Sort
              Algoritma pengurutan yang sangat cepat dengan tipe penyelesaian divide dan conquer. sehingga cocok untuk mengurutkan data dalam jumlah besar.
              Contoh Program :
Algoritma
#include <iostream>
using namespace std;
void quick_sort(int data[], int left, int right)
{
    int i = left, j = right;
    int tmp;
    int pivot = data[(left+right)/2];//partisi
    while (i<j)
    {
        while (data[i] < pivot)
        {
            i++;
        }
        while (data[j] > pivot)
        {
            j--;
        }
        if (i<=j)
        {
            tmp = data[i];
            data[i] = data[j];
            data[j] = tmp;
            i++;
            j--;
        }
    } //rekursif
    if (left < j)
    {
        quick_sort(data, left, j);
    }
    if (i < right)
    {
        quick_sort(data, i, right);
    }
}
int main()
{
    int i, n, data[50];
    cout<<"Masukan banyak data: ";cin>>n;
    for(i=0;i<n;i++)
    {
        cout<<"Masukan data ["<<i<<"] : ";cin>>data[i];
    }
    cout<<"\nData sebelum diurutkan: "<<endl;
    for(i=0;i<n;i++)
    {
        cout<<data[i]<<" ";
    }
    cout<<"\n";
    quick_sort(data,0,n-1);//hasil pengurutan
    cout<<"\nHasil pengurutan:\n";
    {
        int i;
        for (i=0;i<n;i++)
        cout<<data[i]<<" ";
        cout<<"\n";
    }
}

          Hasil Running
         

0 komentar:

Posting Komentar

Cari Blog Ini