Selasa, 12 Mei 2020

pengertian dan contoh sorting pada C++

SORTING

SORTING (PENGURUTAN DATA)
Data terkadang berada dalam bentuk yang tidak berpola ataupun dengan pola tertentu yang diinginkan. Tidak ada algoritma terbaik untuk semua keadaan, kadang kala sebuah algortitma sangat efisien ketika jumlah datanya sedikit, namun kinerjanya menjadi berkurang ketika jumlah data ditambahkan atau meningkat. Meskipun memiliki kemampuan komputasi yang lebih tinggi, namun jika menggunakan algoritma yang kurang efisien, maka akan membutuhkan waktu lebih lama. Sehingga untuk memecahkan permasalahan diperlukan sebuah algoritma yang efektif dan efisien agar persoalan komputasi serta terbatasnya alokasi memori dapat diatasi.
Secara umum ada dua jenis pengurutan data yaitu :
1) Model urut naik (ascending) yang mengurutkan data dari yang mempunyai nilai terkecil sampai terbesar. 
2) Model urut turun (descending) yang mengurutkan data dari yang mempunyai nilai terbesar sampai terkecil. 
Jika N buah data disimpan didalam sebuah array Nilai, maka pengurutan ascending berarti menyusun elemen array sedemikian hingga:

                              NILAI[0] ≤ NILAI[1] ≤ NILAI[2] ≤ ... NILAI[N-1]     (1)

Sedangkan pengurutan descending berarti menyusun elemen array sedemikian hingga: 
                          NILAI[0] ≥ NILAI[1] ≥ NILAI[2] ≥ ... NILAI[N-1](2)

Algoritma pengurutan data yang sering ditemukan dalam literatur komputer antara lain
bubble sort, selection sort, insertion sort, heap sort, shell sort, quick sort, merge sort, radix sort,dan tree sort. Semua algoritma pengurutan selalu melakukan operasi perbandingan data untuk menemukan posisi urutan yang tepat. Berdasarkan tempat penyimpanan data, sorting dibedakan antara external sort dan internal sort.External sort bila datanya berada dalam media external, atau external storage seperti hardisk. Internal sort bila datanya ada dalam internal storage atau memory komputer


 Insertion Sort

Insertion sort adalah suatu metode pengurutan data dengan cara menyimpan data ke suatu variabel sementara, kemudian dibandingkan dengan data-data lainnya yang ada disebelah kiri posisi data tersebut. Demikian seterusnya hingga data terakhir
Algoritma Insertion Sort
Algoritma insertion sort, adalah metode pengurutan dengan cara menyisipkan elemen data pada posisi yang tepat. Pencarian posisi yang tepat dilakukan dengan melakukan pencarian berurutan didalam barisan elemen, selama pencarian posisi yang tepat dilakukan pergeseran elemen. Pengurutan insertion sort sangat mirip dengan konsep permainan kartu, bahwa setiap kartu disisipkan secara berurutan dari kiri ke kanan sesuai dengan besar nilai kartu tersebut, dengan syarat apabila sebuah kartu disisipkan pada posisi tertentu kartu yang lain akan bergeser maju atau mundur sesuai dengan besaran nilai yang dimiliki. Proses pengurutan data dalam sebuah array menggunakan algoritma insertion sort tersebut dapat dilihat pada gambar

terlihat pergeseran array dilakukan dari i=1 yang kemudian dibandingkan dengan array yang berada disebelah kiri. Apabila array kedua lebih kecil dari array pertama, akan dilakukan penukaran. Selanjutnya dengan looping secara perlahan indeks dari array




sebelah kanan dibandingkan lagi dengan array sebelah kiri yang sudah tersusun rapi sehingga apabila ditemukan nilai sebelah kanan lebih kecil dari nilai sebelah kiri yang sudah tersusun rapi, pergeseran dan penukaran akan dilakukan.

1  Selection Sort

 s       Selection Sortadalah suatu metode pengurutan data dengan cara memilih suatu data pada urutan tertentu, kemudian membandingkannya dengan data-data lainnya mulai dari posisi [posisi data+1] sampai dgn data pada posisi ke-n, untuk mencari data terkecil pada rentang posisi tersebut. Jika data terkecil ditemukan, maka pindahkan data terkecil tersebut ke posisi [posisi data], dan data yang semula berada di posisi[posisi data] dipindahkan ke posisi dimana data terkecil tadi ditemukan. Demikian seterusnya hingga data terakhir

Algoritma Selection Sort

Algoritma selection sort sering juga disebut dengan metode maksimum atau minimum. Metode maksimum karena didasarkan pada pemilihan data atau elemen maksimum sebagai dasar pengurutan. Konsepnya dengan memilih elemen maksimum kemudian mempertukarkan elemen maksimum tersebut dengan elemen paling akhir untuk urutan ascending dan elemen pertama untuk descending.
Algoritma selection sort disebut juga dengan metode minimum karena didasarkan pada pemilihan elemen minimum sebagai dasar pengurutan. Konsepnya dengan memilih elemen minimum kemudian mempertukarkan elemen minimum dengan elemen paling akhir untuk urutan ascending dan elemen pertama untuk urutan descending. Proses yang dilakukan oleh algoritma selection sort adalah mengambil nilai terbesar dari susunan data dan menggantikannya dengan data yang paling kanan.
Proses pengurutan data dalam sebuah array menggunakan algoritma selection sort
tersebut dapat dilihat pada gambar
Terlihat proses yang dilakukan oleh algoritma selection sort adalah mengambil nilai terbesar dari susuna array dan menggantikannya dengan array yang paling kanan. Algoritma selection sort selalu menganggap nilai pada index pertama sebagai nilai maksimum (max=0), kemudian membandingkan nilai dari indeks pertama tersebut (array[max]) dengan nilai-nilai pada indeks berikutnya. Apabila nilai dari indeks yang dibandingkan lebih tinggi dari nilai indeks pertama, nilai tersebut diambil sebagai nilai max (max=i). Pembandingan tersebut dilakukan sebanyak ukuran array atau sejumlah elemen data yang akan diurutkan.
            Visual Basic.Net merupakan core dari pembuatan aplikasi berbasis .Net, model untuk development dimana platform dan aplikasi bisa dibuat dan dijalankan tanpa bergantung pada alat (device) yang dipakai. Pada penelitian ini Visual Basic .Net digunakan sebagai antar muka dalam perbandingan algoritma insertion sort dan selection sort

Bubble sort

 (metode gelembung) adalah metode/algoritma pengurutan dengan dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut


  Algoritma Bubble Sort
Algoritma merupakan susunan atau struktural yang diaplikasikan kedalam bahasa komputer atau pemrograman dengan tujuan membantu dalam menyelesaikan permasalahan dimana akan ada data sebagai masukan dan keluaran sebagai hasil dari proses yang dilakukan. Algoritma pengurutan memiliki kelebihan dan kelemahan masing-masing, tidak semua algoritma dapat digunakan untuk melakukan pengurutan data. Algoritma bubble sort adalah salah satu dari beberapa jenis sorting yang digunakan untuk mengurutkan data. Cara kerja dari algoritma ini yaitu mengulangi sebuah proses, lalu melakukan perbandingan di masing-masing dari elemen array dan melakukan pergantian posisi jika urutannya sudah sesuai. Pembandingan dari setiap elemen-elemen array ini akan terus dilakukan hingga kondisi yang ditentukan telah sesuai. Jenis dari algoritma ini termasuk kedalam  jenis algoritma comparison sort, karena melakukan perbandingan dalam operasi diantara elemen- elemen array yang disediakan.
Tahapan-tahapan didalam algoritma bubble sort sebagai berikut : 
Langkah Pertama

1.  Melakukan perbandingan array x[1] dengan array x[2], lalu disusun kembali berdasarkan urutan yang sudah disesuaikan, sehingga x[1] < x[2].
2.     Melakukan perbandingan kembali terhadap array x[2] dengan array x[n], lalu disusun kembali berdasarkan urutan yang sudah disesuaikan, sehingga x[2] < x[n].
3. Melakukan perbandingan array x[n-1] dengan array x[n], lalu disusun kembali berdasarkan urutan yang sudah disesuaikan, sehingga array x[n-1] < x[n], setelah (n-1) kali perbandingan, x[n] akan merupakan elemen array terbesar atau terkecil pertama yang sudah terurut.

Langkah Kedua

Ulangi perbandingan bagian kedua hingga telah membandingkan dan kemungkinan menyusun x[n-2], x[n-1]
2     #  Setelah elemen array ke (n-2) perbandingan, (n-1) akan merupakan elemen terbesar ke-dua
       #Dan dilanjutkan langkah berikutnya Langkah ke (n-1)

      1.       Melakukan perbandingan x[1] dengan x[2] lalu disusun kembali sehingga                                 memunculkan urutan x[1] < x[2]. Sesudah elemen array ke (n-1) langkah, elemen array akan tersusun dalam urutan naik ataupun turun sesusai dengan ketentuan yang sudah ditetapkan.
     
       2. Dan dilanjutkan langkah berikutnya sampai proses akhir selesai.
    Bila diketahui sampel data array awal berupa 10, 6, 9, 8 dan 7, langkah untuk            mengurutkan data tersebut dengan menggunakan algoritma bubble sort adalah          sebagaimana gambar











Sekarang kita masuk ke contoh soal dari ketiga metode program diatas 


CONTOH SOAL INSERTION SORT

Buatlah sebuah program C++ dengan menggunakan metode Insertion Sort!!!
Catatan : Jumlah data yang diurutkan sesuai dengan Angka pada NIM (Nomor Induk Mahasiswa) Terakhir anda +5

Contoh : Jika NIM terakhir anda  =8, maka jumlah datanya = >8 +5 = 13
Setiap Program Cantumkan Nama dan Nim anda

JAWABAN SOAL INSERTION SORT

#include <iostream>
using namespace std;

void tukar(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}

void insertion_sort(int data[])
{
    for (int i = 0; i < 14; i++)
    {
        int index = i;
        while ((index > 0) && (data[index] < data[index - 1]))
        {
            tukar(data[index], data[index - 1]);
            index--;
        }
    }
}

int main()
{
    cout << "NAMA  : LDLTY LTDL" << endl;
    cout << "NIM   : 123456789" << endl;
    cout << "KELAS : COMPUTER SCIENCE" << endl;

    int data[14];
    cout << "Silahkan input data : " << endl;
    for (int i = 0; i < 14; i++)
    {
        cin >> data[i];
    }

    insertion_sort(data);

    cout << "Data setelah diurutkan : " << endl;
    for (int i = 0; i < 14; i++)
    {
        cout << data[i] << endl;
    }
    return 0;
}




CONTOH SOAL SELECTION SORT

Buatlah sebuah program C++ dengan menggunakan metode Insertion Sort!!!
Catatan : Jumlah data yang diurutkan sesuai dengan Angka pada NIM (Nomor Induk Mahasiswa) Terakhir anda +5

Contoh : Jika NIM terakhir anda  =6, maka jumlah datanya = >6 +5 = 11
Setiap Program Cantumkan Nama dan Nim anda


JAWABAN SOAL SELECTION SORT

#include <iostream>
#include <algorithm>
using namespace std;

void tukar(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}

void selection_sort(int data[])
{
    int index;
    for (int i = 0; i < 4; i++)
    {
        index = i;
        for (int j = i + 1; j < 4; j++)
        {
            if (data[j] < data[index])
                index = j;
        }
        tukar(data[i], data[index]);
    }
}

int main(int argc, char const *argv[])
{
    cout << "NAMA  : LDLTY LTDL" << endl;
    cout << "NIM   : 1234567899" << endl;
    cout << "KELAS : COMPUTER SCIENCE" << endl;

    int data[4];
    cout << "Silahkan input data : " << endl;
    for (int i = 0; i < 4; i++)
    {
        cin >> data[i];
    }

    selection_sort(data);

    cout << "Data setelah diurutkan : " << endl;
    for (int i = 0; i < 4; i++)
    {
        cout << data[i] << endl;
    }

    return 0;
}



CONTOH SOAL BUBBLE SORT

Buatlah sebuah program C++ dengan menggunakan metode Insertion Sort!!!
Catatan : Jumlah data yang diurutkan sesuai dengan Angka pada NIM (Nomor Induk Mahasiswa) Terakhir anda +5

Contoh : Jika NIM terakhir anda  =3, maka jumlah datanya = >3 +5 = 8
Setiap Program Cantumkan Nama dan Nim anda


JAWABAN SOAL BUBBLE SORT

#include <iostream>
using namespace std;

void tukar(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}

void bubble_sort(int data[])
{
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 4 - i; j++)
        {
            if (data[j] > data[j + 1])
                tukar(data[j], data[j + 1]);
        }
    }
}

int main()
{
    cout << "NAMA  : LDLTY LTDL" << endl;
    cout << "NIM   : 1234567899" << endl;
    cout << "KELAS : COMPUTER SCIENCE" << endl;

    int data[4];
    cout << "Silahkan input data : " << endl;
    for (int i = 0; i < 4; i++)
    {
        cin >> data[i];
    }

    bubble_sort(data);

    cout << "Data setelah terurut " << endl;
    for (int i = 0; i < 4; i++)
    {
        cout << data[i] << endl;
    }

    return 0;
}






SEKIAN LAH PENJELASAN YANG SAYA BUAT DIATAS TERSEBUT SEMOGA ANDA ANDA SEMUA BISA MEMAHAMINYA DEENGAN MUDAH 

TERIMAKASIH 
ASSALAMUALAIKUM WR.WB


BACA JUGA WEBSITE BERIKUT INI 


BACA JUGAA WEBSITE BERIKUT INI