Cari Blog Ini

Diberdayakan oleh Blogger.

search

Flow -  Progress

Senin, 06 Mei 2019

SORTING

by seftianhanafi.blogspot.com  |  in ALPRO 2 (2D) at  Mei 06, 2019

Pengertian Sorting
Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun). Pengurutan (Sorting) adalah proses pengurutan data yang sebelumnya disusun secara acak sehingga tersusun secara teratur menurut aturan tertentu.
ada banyak program sorting dalam C++, seperti bubble sort, selection sort, insertion sort, exchange sort, merge sort, quick sort, dan lain sebagainya.
Sorting C++
1. Bubble Sort
Yang pertama kita akan membahas bubble sort. Algoritma ini merupakan salah satu algoritma pengurutan yang paling sederhana, baik dalam hal pengertian maupun penerapannya. Ide dari algoritma bubble sort adalah mengulang proses pembandingan antara tiap-tiap elemen array dan menukarnya apabila urutannya salah.
Teknik ini menyusun data yang diinginkan secara berurutan dengan membandingkan elemen data yang ada dan terus diulang hingga tidak perlu dilakukan penukaran lagi.
Berikut ini adalah gambaran dari algoritma bubble sort:
Source code
for i:=1 to Jumlah_data-1 do
  for j:=i+1 to Jumlah_data do
    if Data[i]>Data[j] then
    begin
      t:=Data[i];
      Data[i]:=Data[j];
      Data[j]:=t;
    end;
Kita misalkan memiliki 5 angka yang akan kita simpan kedalam variable Data (Array).
Dengan masing-masing nilai sebagai berikut:
Source code
Data[1] := 3;
Data[2] := 1;
Data[3] := 4;
Data[4] := 2;
Data[5] := 6;
Cara Kerja:
1) Langkah pertama: Data[1] akan dibandingkan dengan Data[2]. Jika Data[1] lebih besar dari Data[2] maka nilai dari kedua variabel tersebut ditukar posisinya.
2) Data[1] akan terus dibandingkan dengan data-data selanjutnya (Data[3], Data[4], dan Data[5]). Hingga akhirnya Data[1] berisi nilai terkecil.
3) Setelah proses perbandingan Data[1] selesai, selanjutnya kita akan membandingkan Data[2] dengan Data[3], Data[4] dan Data[5] seperti proses sebelumnya.
4) Begitu seterusnya sampai semua data selesai di bandingkan.
2. Quick Short
Algoritma quick short ditemukan oleh E. Hoare. Algoritma ini menggunakan metode rekursi sampai habis. Prinsipnya membagi data menjadi dua bagian yang sama (kiri dan kanan). Dimana data tengah menjadi pivot (pusat operasi).
Kemudian kita akan mengumpukan data dengan nilai lebih kecil dari pivot disebelah kiri pivot, dan di kanan untuk yang lebih besar. Karena dimungkinkan bagian kiri dan kanan pivot tidak sama besarnya. maka dari itu tiap bagian di bagi menjadi dua lagi sehingga mempunyai pivot yang baru.
Source code
baca:=0;
pusat := A[(awal+akhir) div 2];
kiri := awal;
kanan := akhir;
While kiri <= kanan Do
  Begin
  While A[kiri] < pusat Do
  Inc(kiri);
  While A[kanan] > pusat Do
    Dec(kanan);
    If kiri<=kanan Then
      Begin
      Ganti(A[kiri],A[kanan]);
      Inc(kiri);
      Dec(kanan);
      Inc(baca);
      End;
  End;
If kanan>awal Then
  Urut(awal,kanan);
  If akhir>kiri Then
    Urut(kiri,akhir);
Algoritma Quick Sort juga disebut juga dengan partition Exchange sort karena konsepnya membuat partisi-partisi, dan sort dilakukan per partisi.
3. Insert Short
Sesuai namanya, pengurutan sisip adalah metode pengurutan dengan menyisipkan elemen array / larik pada posisi yang tepat dengan cara menyisirnya.
Algoritma utamanya adalah sebagai berikut :
Source code
baca:=0;
For i:= 2 To m Do
Begin
  G:=A[i];
  j:=i-1;
  A[0]:=G;
    While G<A[j] Do
    Begin
      A[j+1]:=A[j];
      Dec(j);
      Inc(baca);
    End;
    A[j+1]:=G;
End;

4. Merge Short
MergeSort adalah algoritma yang berdasarkan strategi divide-and-conquer. Algoritma ini  tediri dari dua bagian utama, yaitu bagian pembagian list menjadi sublist-sublist yang lebih kecil dan bagian sort (pengurutan) dan merge (penggabungan) pada sublist-sublist tersebut.
1) Divide:  membagi masalah menjadi beberapa submasalah yang memiliki kemiripan dengan masalah semula namun berukuran lebih kecil (idealnya berukuran hampir sama),
2) Conquer: memecahkan (menyelesaikan) masing-masing submasalah (secara  rekursif), dan
3) Combine: mengabungkan solusi masing-masing submasalah sehingga membentuk solusi masalah semula.

Source code
#include <iostream>
using namespace std;
void merge(int low, int mid, int up);
void mergeSort(int low, int up);
int a[50];
int main()
{
int jumlahBil,i;
cout<<"Masukkan Jumlah element Array"<< endl;
cin>>jumlahBil;
for(int i=0; i<jumlahBil;i++)
{
cout<<"Bilangan ke-"<< i+1 << endl;
cin>>a[i];
}
mergeSort(1,jumlahBil);
for(i=1;i<=jumlahBil;i++)
cout<<a[i]<<"    ";
cout<<endl;
return 0;
}
void merge(int low, int mid, int up)
{
int h, i,j,k;
int b[50];
h = low;
i = low;
j = mid+1;
while((h<=mid)&&(j<=up))
{
if(a[h] < a[j])
{
b[i]=a[h];
h++;
}
else
{
b[i]=a[j];
j++;
}
i++;
}
if(h>mid)
{
for(k=j;k<=up;k++){
b[i]=a[k];
i++;
}
}
else
{
for(k=h;k<=mid;k++)
{
b[i]=a[k];
i++;
}
}
for(k=low;k<=up;k++) a[k]=b[k];
}
void mergeSort(int low, int up)
{
int mid;
if(low<up)
{
mid=(low+up)/2;
mergeSort(low,mid);
mergeSort(mid+1,up);
merge(low,mid,up);
}
}

5. Selection Short
Adalah metode sorting dimana elemen-elemen di perbandingkan satu-persatu sampai pada elemen terakhir dan disusun berdasarkan ketentuan ketentuan berlaku (terbesar atau terkecil).
Source code
#include<iostream>
using namespace std;

int main()
{   int a,k,c,d,g;
    k=4;
    int b[4];
    cout<<"SELECTION SORT BY ZEFTAADETYA.BLOGSPOT.COM"<<endl;
    cout<<"mengurutkan nilai dari besar ke kecil"<<endl<<endl;
    for(a=0;a<k;a++)
    {
        cout<<"Masukkan nilai "<<a+1<<" : ";cin>>b[a];
    }
    for(a=0;a<k-1;a++)
    {
    c=a;
        for(d=a+1;d<k;d++)
        {
            if(b[c]<b[d])
            {
                c=d;
            }
        }
        g=b[c];
        b[c]=b[a];
        b[a]=g;
    }
    cout<<"\n setelah diurutkan akan menjadi : \n";
    for(a=0;a<k;a++)
    {
        cout<<b[a]<<" \n";
    }
}



Daftar Pustaka

0 komentar:

Tugas Besar Pemrograman Visual

Proudly Powered by Blogger.