Persona Intikalia

29 Nov 2009

Sorting Pake Nusa

Eum ... pernah dengar kata 'sorting'? Sorting = sorotan ga penting? Eheheh ... aku rasa bukan itu yah ... !!!


john


Gambar di atas emang ga ada hubungannya ama materi yang kali ini kita bahas, tapi itu buat keren-kerenan. Heheheh

Sorting itu mengurutkan sesuatu dari yang terkecil maupun dari yang terbesar. Di sini aku membahas masalah bagaimana sih sorting itu dapat berjalan di Nusaptel. Sulit sih. Aku aja ngadopsi dari C++, Pascal, en sempat cari-cari di Wikipedia, apa itu sorting dan macam-macamnya dan gimana cara buatnya pake C++ en Pascal yang nantinya aku terjemahkan pake Nusa.

Kenapa harus pake Nusa? Ya itu lah masalahnya boss ... Aku; tepatnya kelas Algoritma, dan Pemrograman Komputer kuliahku ... kena Nusa, jadi ... semuanya harus pake Nusa. Itulah repotnya kalo pake Nusa, ga bisa copy paste gitu aja dari Google. Tapi harus kreatif sedikit nerjemahinnya ke Nusa dulu boss...

Di bawah ini aku akan ngasih beberapa hasil penerjemahan bahasa C++ ataupun Pascal dalam hal sorting-menyorting menggunakan bahasa Nusa.

Di bawah ini menggunakan cara Bubble Sort:

Program Bubble;
void main()
{
  integer j, smtr;
  integer[5] Angka;
  integer i:=1, count:= length(Angka);
  writeline('masukkan 5 angka');
  read(Angka);
  for(i := 1; i<= count; i++;)
  {
    for(j := i; j <= count; j++;)
    {
      if(Angka[i] > Angka[j])
      {
        smtr := Angka[i];
        Angka[i] := Angka[j];
        Angka[j] := smtr;
      }
    }
  }
  writeline('angka urut');
  for(i:=1; i<= count; i++;)
  { writeline(Angka[i]);}
}

Eum ... simpan aja program di atas pake nama "Bubble.source" (tanpa tanda petik). Compile ... lalu Link, dan jalankan.

Penjelasn singkat: Bubble Sort ini mengurutkan dengan cara membandingkan satu per satu dengan angka setelahnya, jika syarat terpenuhi, maka dia akan menukar angka itu. Gampangnya, perhatikan di bawah ini!!!

Misalkan aku punya angka: 3 4 1 2 6 5
Pengurutan dilakukan dari yang terkecil.
Pertama, angka 3 akan dibandingkan dengan angka 4, kedua angka tersebut ga akan ditukar karena 3 lebih kecil 4.
Kedua, sekarang angka 3 dibandingkan dengan angka 1, kedua angka akan ditukar karena 1 lebih kecil dari 3. Maka kedudukan angka-angka itu menjadi: 1 4 3 2 6 5.
Ketiga, ah aku malas banyak menjelaskan, dan seterusnya deh ... Wkwkwkwk :P

Program selanjutnya adalah sorting dengan cara Insertion Sort. Apa itu? Insertion, kayaknya ada yang dimasuk-masukin gitu boss. Hehehe ... langsung tancap aja ke programnya.

Program Insertion;
void main()
{
  integer[9] Q;
  integer i:=1, count:=length(Q);
  integer j, value;
  writeline('masukkan 9 angka');
  read(Q);
  for(i:=1; i<=count; i++)
  { value:=Q[i];
    j:=i-1;
    while(j>=0 AND Q[j]>value)
    { 
      Q[j+1]:=Q[j];
      j:=j-1; 
    }
    Q[j+1] := value; 
  }
  writeline('hasilnya:');
  for(i:=1; i<=count; i++)
  {
    writeline(Q[i]);
  }
}


Weheheh ... program Insertion Sort-nya ga begitu beda jauh boss. Tapi, tetep aja ada bedanya. Insertion ini menerapkan teori culik-menculik angka, tapi nantinya angka itu bakal dikembalikan kalo ada tebusannya. Hehehe ... kayak penjahat aja ni program.

Kug bisa dikatakan sebuah penculikan sih? Eum ... gini, aku terangin dulu ...

Konon, ketika zaman bahuela ... ditetapkan sekelompok angka, misalkan saja: 5 4 3 7 8 9.
Trus, tiba-tiba ada seorang 'Penyortir Bayaran' namanya "Insertion Sort". Dia akan menculik angka yang notabene angka tersebut ga urut. Hehehe ... kug malah ndongeng nih. Gapapa ya boss ... Barisan 5 4 3 7 8 9 ini dilihat oleh si Insertion. Wah ini ga urut. Harus diurutin. Dengan kejam, si Insertion ini menculik angka 4, dan memasang mata-mata palsu sejenis angka 5, tapi tiruan. Jadi barisan angka tadi berubah menjadi 5 (5) 3 7 8 9. Kemudian barisan angka itu pun menyadari bahwa ada temannya yang diculik oleh si Insertion. Si Insertion mau mengembalikan angka 4 jika angka 5 asli menjadi gantinya. Akhirnya semua sepakat kalo angka 5 menjadi gantinya. Setelah itu barisan angka tersebut menjadi 4 5 3 7 8 9. Hal itu terus berlanjut hingga akhirnya barisan angka itu menjadi 3 4 5 7 8 9, sehingga si Insertion ga punya alasan untuk menculik lagi. Dan tamat ceritanya ... !!!

Eum ... dari cerita tadi paham ga apa itu Insertion Sort? Kalo ga paham, ya pahamin aja sendiri boss ... Wkwkwkwk ...

Lanjutnya ...

Sorting pake Quick Sort. Ga jauh beda dari sorting-sorting sebelumnya. Konon, sorting ini lebih cepat dari sorting-sorting yang tadi aku jelasin. Tapi, peduli apa! Aku hanya pake beberapa angka aja, jadi ga seberapa kerasa sih.

Ga pake lama, langsung saja aku tempel di bawah ini.

Program Quick;
void main(){
integer[6] K;
integer i, j, tukar, count:=length(K);
writeline('masukkan 6 angka');
read(K);
for(i:=1;i
for(j:=count; j>1; j--){
if(K[i]>K[j]){
  tukar :=K[i] ;
  K[i]  :=K[j] ;
  K[j]  :=tukar;
}
}
}
writeline('angka telah disorting');
for(i:=1; i
writeline(K[i]);
}
}

OK ... OK ... selanjutnya pada pembahasan pamungkas kita, yaitu Merge Sort.

Merge Sort, adalah sorting dengan cara memecah belah persatuan dan kesatuan Negara Kesatuan Angka Yang Disorting. Hahaha ... Misalkan aku punya kumpulan angka: 2 3 6 4 8 9 1 5. Angka-angka tersebut akan dipecah jadi 2, menjadi: (2 3 6 4) (8 9 1 5). Dan setelah itu akan terus dipecah hingga hanya ada 2 angka pada bagian kecil kumpulan angka itu. Gampangnya, jadi kayak gini: (2 3) (6 4) (8 9) (1 5). Dan setiap bagian kecil itu akan diurutkan. Jika sudah urut, kelompok angka itu akan digabung kembali hingga jadi kumpulan angka seperti ini: 1 2 3 4 5 6 8 9. Prosesnya panjang, dan bikin programnya juga panjang. Ni aja aku ga berasil nerjemahinnya ke Nusa. Pas dikompail sih bisa, trus dilink juga bisa meskipun ada beberapa peringatan. Tapi pas dijalanin ga bisa, ga terjadi apa-apa.

Di bawah ini adalah contoh Merge Sort, tapi pake bahasa C++; nikmati aja!!! Itu aja, aku ngampbilnya dari searching di Google. Wkwkwkwk.

Merge Sort

#include
#include
#include
int a[50];
void merge(int,int,int);
void merge_sort(int low,int high)
{
 int mid;
 if(low
 {
  mid=(low+high)/2;
  merge_sort(low,mid);
  merge_sort(mid+1,high);
  merge(low,mid,high);
 }
}
void merge(int low,int mid,int high)
{
 int h,i,j,b[50],k;
 h=low;
 i=low;
 j=mid+1;


 while((h<=mid)&&(j<=high))
 {
  if(a[h]<=a[j])
  {
   b[i]=a[h];
   h++;
  }
  else
  {
   b[i]=a[j];
   j++;
  }
  i++;
 }
 if(h>mid)
 {
  for(k=j;k<=high;k++)
  {
   b[i]=a[k];
   i++;
  }
 }
 else
 {
  for(k=h;k<=mid;k++)
  {
   b[i]=a[k];
   i++;
  }
 }
 for(k=low;k<=high;k++) a[k]=b[k];
}
void main()
{
 int num,i;


cout<<"********************************************************************************"<
cout<<"                             MERGE SORT PROGRAM                                 "<


cout<<"********************************************************************************"<
 cout<<
 cout<<"Please Enter THE NUMBER OF ELEMENTS you want to sort [THEN PRESS ENTER]:"<
 cin>>num;
 cout<
 cout<<"Now, Please Enter the ( "<< num <<" ) numbers (ELEMENTS) [THEN PRESS ENTER]:"<
 for(i=1;i<=num;i++)
 {
  cin>>a[i] ;
 }
 merge_sort(1,num);
 cout<
 cout<<"So, the sorted list (using MERGE SORT) will be :"<
 cout<<


 for(i=1;i<=num;i++)
 cout<<<" ";


 cout<<<<
 getch();
}


Puuaaaaaaanjang kan? Hahahah .... aku udah nyoba terjemahin pake Nusa, di bawah ini hasil kreativitasku boss ...

Program Merger;
integer [] a;
void merge_sort(integer low, high){
integer mid;
if(low
  mid:=(low+high)/2;
  merge_sort(low,mid);
  merge_sort(mid+1,high);
  merge(low,mid,high);
  }
}


void merge(integer low, mid, high){
integer h,i,j,k;
integer[] b;
h:=low;
i:=low;
j:=mid+1;
while((h<=mid)AND(j<=high)){
  if(a[h]<=a[j]){
    b[i]=a[h];
    h++;
    }
  else{
    b[i]=a[j];
    j++;
    }
  i++;
}


if(h>mid){
  for(k=j;k<=high;k++){
    b[i]=a[k];
    i++;
    }
  }
else{
  for(k=h;k<=mid;k++){
    b[i]=a[k];
    i++;
    }
}
  for(k=low;k<=high;k++){a[k]=b[k];}
}


void main(){
integer num,i;
writeline('masukkan angka');
read(num);
writeline('sekarang tekan enter');
for(i:=1; i<=num; i++){
  read(a[i]);
}
merge_sort(1,num);
writeline('hasil: ');
for(i:=1; i<=num; i++){
  writeline(a[i]);
}
}


Simpan dengan nama "Merger.source" (tanpa tanda petik). Tapi program itu gagal. Masih ada waktu yang akan datang. Aku coba dulu lain kali, nanti kalo berhasil aku posting.

OK ... sampe di sini dulu postinganku. Terus semangat, terus berusaha, karena dunia ada di tangan kita!!! Vivat Intikali!!! Intikalis Bersatu, Dunia Takluk !!! (kata siapa?) Hehehe ...
Diete Jinde Diete Ego ...
Salam Selonis, hormatku, John Terro ze Palatere, Intikalis Kiri.

1 komentar:

  1. tentang pasang daftar adsense:
    http://id-tutorial.com/tutorial-daftar-google-adsense.htm/

    masuk ke google adsense dgn akun google kita (aku biasa masuk google adsense melalui igoogle - lalu klik "akun saya" (ada di panel atas kanan) oh ya aku setting googlenya bhs indonesia

    kalo tentang cara pasangnya atau yg lain tanya saja (insya Allah bisa bantu)

    BalasHapus