Senin, 16 Mei 2016

Pembahasan Materi Sorting : Tentang Insertion Sort

Assalamu’alaikum w.r,w,b


Pada kesempatan ini saya membuat Program dari materi SEARCHING AND SORTING , program ini dibuat dalam bentuk Flowchart dan C++ . Program yang akan di buat yaitu : Insertion Sort.

Menyusun Algoritma :
procedure insertion_sort(input/output data:larik; input n:integer)

Deklarasi:
a,i, j, temp : int

Deskripsi:
for (int i = 0; i < a; i++) {fungsi Perulangan jika i < a maka i akan terus bertambah}
{
temp = data [i];

j = i-1;
do(j > 1) {fungsi perulangan menggunakan do while yg kondisinya jika j > 1}
{

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

j = j-1;
}

while (temp <= data [j]);

if (temp >= data [j]) {fungsi percabangan yg kondisinya jika temp >= data [j] maka data [j+1] = temp}
{
data [j+1] = temp;
}

else {mengganti tempat elemen saat ini data[j+1] dengan elemen data[j] dan element data [j] ditukar dengan element temp}
{data [j+1] = data [j];


data [j] = temp;
}
}

Pengimplementasian Program Flowchart yang menggunakan RAPTOR :












Pengimplementasian Program C++ yang Menggunakan Dev C++ :

#include <iostream>
#include <conio.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

using namespace std;

class Sorting {
      friend istream& operator>>(istream& in, Sorting& a);
      friend ostream& operator<<(ostream& out, Sorting& a);
public:
       void baca_data();
       void cetak_data();
       void buble_sort();
       void insertion_sort();
       void selection_sort();
private:
        void minimum(int , int, int&);
        void tukar (int&, int&);
        int data[10], n;
};
  istream& operator>>(istream& in, Sorting& a) {
    cout<<"Banyak data : ";
    in>>a.n;
    for (int i = 0; i < a.n; i++) {
    cout<<"Data ke-" <<i+1<< " : ";
    in>>a.data[i];
}
  return in;
}
  ostream& operator<<(ostream& out, Sorting& a) {
    for (int i = 0; i < a.n; i++)
    out<<a.data[i] << " ";
    out<<"\n";
  return out;
}
  void Sorting::tukar (int &a, int &b){
       int temp;
       temp = a;
       a = b;
       b = temp;
  }
  void Sorting::insertion_sort(){
       int i, j, temp;
       cout<<"Data pertama sudah ada ditangan kiri, yaitu : " << data[0] << '\n';
       for(j = 1; j < n; j++){
           temp = data[j];
           cout<<"\nData ke-" << j+1 << " yaitu " << data[j] << " diambil dari papan\n";
           cout<<"Dilakukan penggeseran elemen :\n";
       for(i = j - 1; (i >= 0) && (data[i] > temp); i--){
           cout<<"data pd posisi ke-[" << i+1 << "] digeser ke posisi [" << i+2 << "]\n";
           data[i+1] = data[i];
       }
        cout<<"Data baru masuk pada posisi ke-[" << i+2 << "]\n";
        data[i+1] = temp; //Insert key into proper position
        cout<<"Data saat ini adalah : ";
        for (int k=0; k<=j; k++) cout << data[k] << " ";
        cout<<endl;
            getch();
            }
  }
int main(int argc, char** argv) {
    Sorting angka;
    cin>>angka;
    angka.insertion_sort();
    cout<<"\nHasil akhir adalah : \n";
    cout<<angka;

 return 0;
}




Output/hasil compiler dari program tersebut :




Langkah-Langkah Pengerjaan:

Terdapat angka yang acak di bawah ini :

[8,6,7,4,5,2,3,1]

-Cara pengerjaanya pertama-tama kita menggambil angka pertama di sebelah kiri yaitu [8]

[8]

-Kemudian kita ambil angka ke dua yaitu [6] , karena angka [6] lebih kecil dari [8], kita ditaruh di
sebelah kiri:

[6, 8]

-Kemudian kita ambil angka ke tiga yaitu [7], karena angka ke [7] < [8] dan [7] > [6], maka kita taruh di tengah-tengah antara angka [6] dan [8], seperti di bawah ini:



[6,7,8]


-Selanjutya kita ambil angka ke empat yaitu [4] karena tiga lebih kecil dari angka yang kita cari sebelumnya, maka angka [4] kita taruh di paling kiri, seperti di bawah ini:


[4,6,7,8]


-Selanjutnya kita ambil angka ke lima yaitu [5], karena angka [5] < [6,7,8] dan [5] > [4] maka kita taruh seperti di bawah ini:


[4,5,6,7,8]


-Selanjutya kita ambil angka ke enam yaitu [2] karena [2] lebih kecil dari angka yang kita cari sebelumnya, maka angka [2] kita taruh di paling kiri, seperti di bawah ini:


[2,4,5,6,7,8]


-Selanjutya kita ambil angka ke tujuh yaitu [3], karena [3] < [4,5,6,7,8] dan [3] > [2] maka kita taruh seperti di bawah ini:


[2,3,4,5,6,7,8]

-Selanjutya kita ambil angka ke delapan yaitu [1], karena [1] < [2,3,4,5,6,7,8] maka kita taruh seperti di bawah ini:


[1,2,3,4,5,6,7,8]

Selesai....,  karena angka-angka sudah berurut, dan begitulah langkah-langkah pengerjaannya. terimakasih.

Wassalamu’alaikum w.w.

Untuk pembahasan Bubble Sort silakan kunjungi link blog teman kelompok saya   :


Untuk pembahasan Selection Sort silakan kunjungi link blog teman kelompok saya :

0 komentar:

Posting Komentar