Jumat, 30 November 2018

Bucket Sort


Nama : Rayhan Fadhillah
NPM  : 45118943
Kelas : 1DC02
Mata Kuliah : Algoritma & Pemrograman A

Dosen : Kunto Bayu A, ST


7. Bucket Sort

Pengertian : Bucket sort adalah algoritma sorting yang bekerja dengan partisi array ke dalam jumlah terbatas sort.Setiap kotak ini kemudian diurutkan secara individual,baik menggunakan algoritma sorting yang berbeda ,atau dengan menerapkan algoritma bucket sort.Variasi dari metode ini disebut semacam hitungan tunggal buffered lebih cepat dan membutuhkan waktu sekitar yang sama untuk berjalan pada set data.

Contoh Program Bucket Sort :

#define NUMELTS 100
#include <stdio.h>
#include <iostream.h>

class element
{
public:
    int value;
    element *next;
    element()
    {
    value=NULL;
    next=NULL;
    }
};

class bucket
{
public:
element *firstElement;
bucket()
{
firstElement = NULL;
}
};

void main()
{
    int lowend=0;
    int highend=100;
    int interval=10;
    const int noBuckets=(highend-lowend)/interval;
    bucket *buckets=new bucket[noBuckets];
    bucket *temp;

    for(int a=0;a<noBuckets;a++)
    {
        temp=new bucket;
        buckets[a]=*temp;
    }

    cout<<"--------The Elements to be Sorted using Bucket sort are ------------------\n";
    int array[]={12,2,22,33,44,55,66,77,85,87,81,83,89,82,88,86,84,88,99};

    for(int j=0;j<19;j++)
    {
    cout<<array[j]<<endl;
    element *temp,*pre;
    temp=buckets[array[j]/interval].firstElement;
        if(temp==NULL)
        {
            temp=new element;
            buckets[array[j]/interval].firstElement=temp;
            temp->value=array[j];
        }
        else
        {
            pre=NULL;
                while(temp!=NULL)
                   {
               if(temp->value>array[j])
                   break;
                   pre=temp;
                   temp=temp->next;
                   }
                if(temp->value>array[j])
                {
                    if(pre==NULL)
                    {
                        element *firstNode;
                        firstNode=new element();
                        firstNode->value=array[j];
                        firstNode->next=temp;
                        buckets[array[j]/interval].firstElement=firstNode;
                    }
                    else
                    {
                        element *firstNode;
                        firstNode=new element();
                        firstNode->value=array[j];
                        firstNode->next=temp;
                        pre->next=firstNode;
                    }
                }
                else
                {
                    temp=new element;
                    pre->next=temp;
                    temp->value=array[j];
                }

        }
 }

    cout<<"------------------------The Sorted Elements Are---------------\n";
    for(int jk=0;jk<10;jk++)
    {
        element *temp;
        temp= buckets[jk].firstElement;
            while(temp!=NULL)
            {
                cout<<"*"<<temp->value<<endl;
                temp=temp->next;
            }
    }
    cout<<"--------------------------------END--------------------------------\n";
}


Contoh Gambar Bucket Sort :





Sumber : sariny.staff.gunadarma.ac.id/Downloads/files/.../BAB+6+TSORTIR.DOC
                 
http://includeryokom.blogspot.com/2012/04/jenis-jenis-penyortiran-beserta.htm

Radix Sort


Nama : Rayhan Fadhillah
NPM  : 45118943
Kelas : 1DC02
Mata Kuliah : Algoritma & Pemrograman A
Dosen : Kunto Bayu A, ST


8. Radix Sort

Pengertian : Yaitu merupakan salah satu algoritma Non-Comparasion Sort (pengurutan tanpa pembandingan).Proses yang dilakukan dalam metode ini adalah mengklasifikasikan data sesuai dengan kategori terurut yang tertentu, dan tiap kategori dilakukan pengklasifikasian lagi,dan seterusnya sesuai kebutuhan, lalu subkategori tersebut digabungkan kembali. Metode ini pertama kalinya mengurutkan nilai-nilai input berdasarkan radix pertamanya,lalu pengurutan dilakukan bersarkan radix keduanya,dan begitu seterusnya. Pada sistem desimal radix adalah digit dalam angka desimal.

Contoh Program Radix Sort :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
kekosongan radix (int a [], int n, int m){

typedef struct simpul
{
int data;
struct simpul * berikutnya;
NODE};
Node * ptr, * awal, * prev;
Node * depan [10], * belakang [10];
int k = 1, i, j, y, p;;
/ * Membuat linked list awal * /
mulai = NULL;
for (i = 0; i <n; + + i)
{
ptr = (Node *) malloc (sizeof (NODE));
ptr-> data = a [i];
ptr-> next = NULL;
if (mulai == NULL)
start = ptr;
lain
prev-> next = ptr;
prev = ptr;
}
/ * Radix sort * /
for (i = 1; i <= m; + + i)
{
for (j = 0; j <10; + + j)
depan [j] = NULL;
/ * Menempatkan elemen ke antrian * /
ptr = mulai;
sementara (ptr! = NULL)
{Y = ptr-> data / k% 10 ;/ * y adalah angka * /
jika (depan [y] == NULL)
{
depan [y] = ptr;
belakang [y] = ptr;
}
lain
{
belakang [y] -> next = ptr;
belakang [y] = ptr;
}
ptr = ptr-> next;
}
mulai = NULL;
for (j = 0; j <10; + + j)
jika (depan [j] = NULL!)
{
if (mulai == NULL)
start = depan [j];
lain belakang [p] -> next = depan [j];
p = j;
}
belakang [p] -> next = NULL;
k = k * 10;
}
/ * Menyalin kembali ke array * /
ptr = mulai;
for (i = 0; i <n; + + i, ptr = ptr-> berikutnya)
a [i] = ptr-> data;
}
void main ()
{
int a [100], n, i, m;
suhu arang;
melakukan
{
clrscr ();
printf ("=========================== RADIX SORT ================== ========================= \ n ");
printf ("ENTER JUMLAH ANGKA DAN JUMLAH DIGIT \ n");
scanf ("% d% d", & n, & m);
printf ("ENTER UNSUR \ n");
for (i = 0; i <n; + + i)
scanf ("% d", & a [i]);
radix (a, n, m);
printf ("daftar diurutkan \ n");
for (i = 0; i <n; + + i)
printf ("% d", a [i]);
printf ("\ nAnda ingin melanjutkan [y / n]? \ n");
scanf ("% c", & temp);

} Sementara (temp == 'y' | | temporer == 'Y');
printf ("\ n --------------------------------------------- ------------------------------------ \ n ");
getch ();
}
  
Contoh Gambar Radix Sort :


Shell Sort


Nama : Rayhan Fadhillah
NPM  : 45118943
Kelas : 1DC02
Mata Kuliah : Algoritma & Pemrograman A
Dosen : Kunto Bayu A, ST


9. Shell Sort

Pengertian : shell sort mengacu pada algoritma sorting dimana data didistribusikan dari input untuk struktur peralihan beberapa yang kemudian dikumpulkan dan ditempelkan pada output.

Contoh Program Shell Sort :

#include<conio.h>
#include<iostream.h>
#define n 10

class shellsort{
  static int A[n];
public:
  void InsSort(int start, int step);
  void ShellSort();
  void tampil();
};

int shellsort::A[n]={20,23,120,56,78,50,12,89,10,12};

void shellsort::InsSort(int start, int step)
{
  int i,j,y;
  bool ketemu;

  i=start+step;
  while(i<=n)
  {
     y=A[i];
     j=i-step;
     ketemu=false;
     while((j>=0)&&(!ketemu))
     {
        if(y<A[j])
        {
           A[j+step]=A[j];
           j=j-step;
        }
        else
           ketemu=true;
     }
     A[j+step]=y;
     i=i+step;
  }

}

void shellsort::ShellSort()
{
   int step,start;
   step=n;
   while(step>1)
   {
      step=step/3+1;
      for(start=1;start<=step;start++)
             shellsort::InsSort(start,step);
   }
}

void shellsort::tampil(){
for(int a=0;a<10;a++)
    {
       cout<<A[a]<<" ";
    }
    cout<<endl<<endl;
}

void main()
{
    shellsort x;
    cout<<"PENGURUTAN SHELL"<<endl<<endl;
    cout<<"Sebelum diurut : "<<endl<<"A = ";
    x.tampil();
    x.ShellSort();
    cout<<"Setelah diurut : "<<endl<<"A = ";
    x.tampil();
    getch();
}


Contoh Gambar Shell Sort :








Shuffle Sort

Nama : Rayhan Fadhillah
NPM  : 45118943
Kelas : 1DC02
Mata Kuliah : Algoritma & Pemrograman A
Dosen : Kunto Bayu A, ST


10. Shuffle Sort

Pengertian : shuffle sort memperkirakan distribusi barang yang akan di urutkan dengan memeriksa n/ 8item pertama. Semacam partisi distributif dengan mendekati median dan interpolasi linear dari minimum untuk median dan dari median untuk maksimal.


Contoh Program Shuffle Sort :


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main ()
{
  int iSecret, iGuess;

  /* initialize random seed: */
  srand ( time(NULL) );

  /* generate secret number: */
  iSecret = rand() % 10 + 1;

  do {
    printf ("Guess the number (1 to 10): ");
    scanf ("%d",&iGuess);
    if (iSecret<iGuess) puts ("The secret number is lower");
    else if (iSecret>iGuess) puts ("The secret number is higher");
  } while (iSecret!=iGuess);

  puts ("Congratulations!");
  return 0;


}


Contoh Gambar Shuffle Sort :