Sorting dalam Algoritma Pemrograman

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, dsb.

didalam sorting memerlukan algoritma pertukaran nilai yaitu :

//judul     :    menukar nilai variable
//kamus     :    nilai1,nilai2,tampung <-- integer
//deskripsi :
               nilai1<--1
               nilai2<--2
               tampung<--0

//pertukaran
              tampung<--nilai1  ///tampung di isi nilai1==1,jadi 
                                   tampung bernilai 1
              nilai1<--nilai2   ///nilai1 di isi nilai2==2,jadi 
                                   nilai1 bernilai 2
              nilai2<--tampung  ///nilai2 di isi tampung==1, jadi 
                                   nilai 2 bernilai 1

Jenis-Jenis Sorting
1.bubble sort
bubble sort adalah metode pengururan dengan cara membandingkan data dan menukar data dengan tepat disebelahnya secara terus menerus sampai dipastikan data tidak ada lagi perubahan.

notasi :

///Judul :  metode bubble sort
///kamus :
               data[1...7]={4,2,3,1,2,5,7} array of integer // artinya    
                                          bahwa data ke 1=4,
                                                ata ke 2=2,
                                                data ke 3=3,
                                                data ke 4=1,
                                                data ke 5=2,
                                                data ke 6=5, 
                                                dan data ke 7=7
           p1,p2<--integer //merupakan variable untuk perulangan
           p3<--integer //variable yang bernilai p2+1
           tem<--integer //untuk menampung nilai sementara
deskripsi :  
              tem=0
              p1<--1
              while(p1<=7)  //artinya selama p1 kurang atau sama 
                              dengan 7 maka perintah di dalam akan 
                              terus di ulang.
           {
                  p2=1 // setiap p1+1, p2 akan kembali ke nilai 1 
                       karena p2 berada di dalam perulangan p1. 
                       jika terdapat perulangan di dalam perulangan 
                       maka perulangan yang di dalam akan di 
                       kerjakan terlebih dahulu baru kemudian 
                       perulangan yang di luar.
             while(p2<=7-1)
                 {
                 p3=p2+1
                 if(data[p2]>data[p3]) //untuk (A-Z) maka tanda 
                                       <,untuk (Z-A) maka tanda >.
                       {
                       //prosedur pertukatan nilai
                       tem=data[p2]
                       data[p2]=data[p3]
                       data[p3]=tem
                       }
                   p2=p2+1
               }
             p1=p1+1
           }

langka perlangka dalam bubble sort adalah sebagai berikut :

4,2,3,1,2,5,7  data awal

2,3,1,2,4,5,7
adalah urutan  data ketika perulang p1 = 1
data ke p2 terus di bandingkan dengan data ke p3=p2+1, dan terus melakukan pertukaran nilai jika keadaan nilai terpenuhi yaitu if(data[p2]>data[p3]) sempai p2 melewati syarat perulang (p2<=7-1) dan di bandingkan dengan p3. setiap data ke p2>p3 maka akan  di lakukan perukaran nilai.

2,1,2,3,4,5,7
adalah urutan  data ketika perulang p1 = 2 p2 kembali ke keadaan p2=1 dan melakukan perulang kembali.

1,2,2,3,4,5,7
adalah urutan data ketika perulangan p1=3 walau pun data sudah terurut p1 dan p2 tetap melakukan perulangan sampai p1 melewati syarat perulangan yaitu p1<=7

notasi di aplikasikan dalam program bahasa C :

#include <stdio.h>
#include <stdlib.h>
///judul : bubble sort
///kamus : 
           int data[7]={4,3,4,1,2,5};
           int p1,p2,p3;
           int tem;
           int output;

//deskripsi : 

int main()
{
    tem=0;
    p1=0;
    printf("data awal \n");
    for(output=0;output<7;output++)
    {
    printf("%d",data[output]);
    }
         printf("\n");
    while(p1<7)
    {
      p2=0;
         while(p2<7-1)
         {
           p3=p2+1;
           if(data[p2]>data[p3]) 
           {
              tem=data[p2];
              data[p2]=data[p3];
              data[p3]=tem;
           }
         p2++;
        }
          printf("data setelah perulangan p1=%d-->",p1); 
          for(output=0;output<7;output++)
          {
            printf("%d",data[output]);
          }
       printf("\n");
      p1++;
    }

}

hasil program setelah di jalankan:

bubble-sort

2. selection sort
selection sort merupakan perbaikan dari metode bubble sort dengan mengurangi jumalh perbandingan. selection sort merupakan metode pengurutan dengan mencari nilai data terkecil dan nilai data terbesar dimulai dari data di posisi 1 hingga di posisi  n-1.

Notasi :

//Judul :  selection sort 
//Kamus :  p1,p2<--integer
           tem<--integer
           data[1...7]={4,2,3,1,2,5,7} array of integer

//deskripsi :
              tem<--0
              p1<--1
              while(p1<=7-1)
              {
              p2<--p1+1
                      while(p2<=7)
                      {
                          if(data[p1]>data[p2]) // untuk (A-Z) maka tanda 
                                             <,untuk (Z-A) maka tanda >.
                          {
                             //pertukatan nilai
                             tem=data[p1]
                             data[p1]=data[p2]
                             data[p2]=tem
                          }
                         p2=p2+1
                      }
               p1=p1+1
               }

langkah-perlangkah dalam selection sort adalah sebagai berikut :

4,2,3,1,2,5,7  data awal

1,4,3,2,2,5,7 adalah hasil setelah perulang p1=1

data p1 dan p2 di bandingkan sehingga  nilai 4 yang awalnya berada di data[1] dan data[2] bertukar karena memenuhi syarat if, maka data [1] =2. kemudian perulangan berjalan kembali dan membandingkan data [1] sampai perulangan p2 berhenti. pada saat data[p2=4] nilai bertukar kembali karena data[p1=1]=2 lebih besar data[p2=4]=1,shingga urutannya menjadi seperti di diatas.

1,2,4,3,2,5,7 adalah hasil setelah perulang p1=2

di mana perpindahan terjadi di data [p1=2] yang awalnya bernilai 4 ditukar dengan data [p2=3] yang bernilai 3 dan data p1 berisi  nilai 3, kemudian perulang p2 berjalan kembali, karena data [p1] yang berisi nilai 3 lebih besar dengan data[p2=4] yang bernilai 2 maka terjadi kembali pertukaran nilai.

1,2,2,4,3,5,7 adalah hasil setelah perulang p1=3

data[p1=3] yang berisi nilai 4 ternyata lebih besar dari data[p2=4] yang berisi nilai 3 maka di lakukan pertukaran nilai dan melanjutkan perulangan. setelah itu data[p1=3] yang berisi 3 ternya lebih besar nilainya di banding nilai yang berada di dalam data[p2=5] yang bernilai 2 maka nilai di tukar. sehingga seperti di atas.

1,2,2,3,4,5,7 adalah hasi setelah perulang p1=4

data[p1=4] yang benilai 4 ternyata lebih besar dari data[p1=5] yang bernilai 3 maka nilai di tukar.

nilai tidak berubah samapi p1=7-1 atau 6 karena nilai sudah tidak memenuhi persyaratan if,yaitu jika data[p1]>data[p2] maka di tukar.

notasi di aplikasikan dalam program bahasa C :

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

///judul : selection sort
///kamus :
           int p1,p2;
           int tem;
           int data[7]={4,2,3,1,2,5,7};
           int output;

///deskripsi :
int main()
{

       tem=0;
       p1=0;
       printf("data awal \n");
       for(output=0;output<7;output++)
       {
         printf(" %d ",data[output]);
       }
      printf("\n\n");
        while(p1<7-1)
         {
           p2=p1+1;
            while(p2<7)
              {
                 if(data[p1]>data[p2])
                   {
                   //pertukatan nilai
               printf("data[%d]=%d ditukar dengan   
               data[%d]=%d\n",p1,data[p1],p2,data[p2]);

              tem=data[p1];
              data[p1]=data[p2];
              data[p2]=tem;
                      for(output=0;output<7;output++)
                      {
                       printf(" %d ",data[output]);
                       }
              printf("\n");
                 }
             p2++;
            }
            for(output=0;output<7;output++)
            {
            printf(" %d ",data[output]);
            }
            printf("\n");
         p1++;
       }
}

hasil setelah program di jalankan :
selection-sort

 

Leave a Reply

Your email address will not be published. Required fields are marked *